diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java new file mode 100644 index 0000000..c297633 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -0,0 +1,105 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.certificate.ElectronicImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author cz + * @date 2023-8-15 + */ +public class ElectronicSignTemplate { + + /** + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-20f) + .horizontal(50f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicImage(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(10f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签名的图片设置,支持重写 + */ + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 自动生成是根据宽度设定取空隙平均值 + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static List autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) { + List electronicImageList = new ArrayList<>(); + ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal(""); + Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ? + 0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1); + ElectronicImage electronicImage = null; + Float tempIntervalWith = intervalWith; + for (int i = 0; i < sealsNumber; i++) { + electronicImage = defaultAbsoluteElectronicSignSeal(""); + electronicImage.setHorizontal(tempIntervalWith); + tempIntervalWith += intervalWith + templateElectronic.getStampWidth(); + electronicImageList.add(electronicImage); + } + return electronicImageList; + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java new file mode 100644 index 0000000..c297633 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -0,0 +1,105 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.certificate.ElectronicImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author cz + * @date 2023-8-15 + */ +public class ElectronicSignTemplate { + + /** + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-20f) + .horizontal(50f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicImage(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(10f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签名的图片设置,支持重写 + */ + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 自动生成是根据宽度设定取空隙平均值 + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static List autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) { + List electronicImageList = new ArrayList<>(); + ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal(""); + Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ? + 0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1); + ElectronicImage electronicImage = null; + Float tempIntervalWith = intervalWith; + for (int i = 0; i < sealsNumber; i++) { + electronicImage = defaultAbsoluteElectronicSignSeal(""); + electronicImage.setHorizontal(tempIntervalWith); + tempIntervalWith += intervalWith + templateElectronic.getStampWidth(); + electronicImageList.add(electronicImage); + } + return electronicImageList; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java new file mode 100644 index 0000000..fbbca76 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java @@ -0,0 +1,457 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.ModuleFieldMapper; +import com.casic.missiles.mapper.file.ModuleTemplatePrintMapper; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import javax.annotation.Resource; +import java.io.File; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author cz + * @date 2023-8-14 + */ +public class FilePrintSupport implements FilePrintEnum { + + @Resource + private ModuleFieldMapper moduleFieldMapper; + @Resource + private ModuleTemplatePrintMapper moduleTemplatePrintMapper; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + //查询模板id,获取模板的minFileName + String templateName = fileRegisterMapper.getTemplateFileById(moduleTemplatePrintConfig.getTemplateFileId()); + filePrintRegister.setFileName(templateName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + templateName); + filePrintRegister.setFileNameId(id); + //添加模板到待下载列表 + List fileNames = new ArrayList<>(); + fileNames.add(templateName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + //这里需要添加电子签章 + ElectronicSignSeal.electronicNoKeySignSeals(moduleTemplatePrintConfig.getSigns(), filePrintRegister); + //添加默认的参数 + filePrintRegister.setParams(populateDefaultParam()); + return filePrintRegister; + } + + /** + * 新增填充默认参数 + */ + private Map populateDefaultParam() { + Map param = new HashMap<>(); + param.put("currentDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())); + param.put("currentTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + return param; + } + + /** + * 获取关联表配置 + * + * @param relateModuleIds + * @return + */ + protected List getRelateModuleFieldConfig(String relateModuleIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List relateModuleIdList = new ArrayList<>(); + String[] typeStr = relateModuleIds.split(","); + for (int i = 0; i < typeStr.length; i++) { + relateModuleIdList.add(Long.valueOf(typeStr[i])); + } + queryWrapper.in("id", relateModuleIdList); + List moduleFieldConfigList = moduleFieldMapper.selectList(queryWrapper); + return moduleFieldConfigList; + } + + /** + * ' + * 获取模块配置 + * + * @param moduleName + * @param moduleType + * @return + */ + protected ModuleTemplatePrintConfig getModuleTemplatePrintConfig(String moduleName, String moduleType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("module_name", moduleName); + queryWrapper.eq(StringUtils.isNotEmpty(moduleType), "module_type", moduleType); + List moduleFieldConfigList = moduleTemplatePrintMapper.selectList(queryWrapper); + Optional optionalModuleConfig = moduleFieldConfigList.stream().findFirst(); + return optionalModuleConfig.isPresent() ? optionalModuleConfig.get() : null; + } + + /** + * 当前模块的信息 + * + * @param filePrintRegister 打印注册信息 + * @param moduleFieldId 模块文件id + * @param moduleIdValue + * @return 返回类型的数据 + */ + protected Map moduleField(FilePrintRegister filePrintRegister, Long moduleFieldId, Long moduleIdValue) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //获取当前模块对应的信息 + List> metaDataList = moduleFieldMapper.getBizMapList(moduleFieldConfig.getTableName(), moduleIdValue); + Map tableNameMap = new HashMap<>(); + if (metaDataList.size() == 1) { + Map metaDataMap = metaDataList.get(0); + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + filePrintRegister.setParams(metaDataMap); + //时间格式的转换,统一处理 + convertMapDate(metaDataMap); + } else if (metaDataList.size() > 0) { + int count = 1; + for (Map relateBizMap : metaDataList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : metaDataList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + filePrintRegister.getParams().put(shortName, metaDataList); + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), metaDataList); + return tableNameMap; + } + + + //空的,留作扩展使用 + protected void moduleCustomizedProcessing(FilePrintRegister filePrintRegister, + Map customParam, + ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + if (ObjectUtils.isNotEmpty(moduleFieldId)) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //构建图片元素 + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + if (StringUtils.isNotEmpty(relateModuleIds)) { + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //构建图片元素 + for (ModuleFieldConfig moduleFieldConfig : moduleFieldConfigs) { + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + } + //处理map中的自带的图片参数 + if (Objects.nonNull(filePrintRegister.getParams())) { + filePrintRegister.getParams().putAll(customParam); + } else { + filePrintRegister.setParams(customParam); + } + + } + + /** + * 相当于消费存在一定的顺序 + * + * @param tableNameMap 前置执行表结果的缓存 + * @param filePrintRegister 打印注册信息 + * @param moduleFieldConfig 模块配置信息 + * @return 返回类型的数据 + */ + protected void relateModuleField(FilePrintRegister filePrintRegister, + Map tableNameMap, + ModuleFieldConfig moduleFieldConfig) { + //健壮性校验,没有关联关系,直接退出 + if (StringUtils.isEmpty(moduleFieldConfig.getRelationJson())) { + return; + } + //构建查询参数 + List fieldTableDTOList = buildFieldTableDTOList(moduleFieldConfig.getRelationJson(), tableNameMap); + //健壮性校验 + if (CollectionUtils.isNotEmpty(fieldTableDTOList)) { + List> relateBizMapList = null; + //当前集合的长度为1,且设置的in查询为true,可以执行外键 + if (fieldTableDTOList.size() == 1 && fieldTableDTOList.get(0).getSqlIn()) { + List relateIdList = new ArrayList<>(); + String[] typeStr = fieldTableDTOList.get(0).getForeignKeyValue().split(","); + for (int i = 0; i < typeStr.length; i++) { + relateIdList.add(Long.valueOf(typeStr[i])); + } + //执行关联表“in”查询 + relateBizMapList = moduleFieldMapper.inRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList.get(0).getForeignKeyField(), relateIdList); + } else { + //执行关联表“=”号查询 + relateBizMapList = moduleFieldMapper.equalRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList); + } + //健壮性校验 + if (CollectionUtils.isEmpty(relateBizMapList)) { + return; + } + //判断是否是用于doc填充 + if (ObjectUtils.isNotEmpty(moduleFieldConfig.getDocUse()) && 1 == moduleFieldConfig.getDocUse()) { + int count = 1; + for (Map relateBizMap : relateBizMapList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : relateBizMapList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //判断当前模块信息在单元格中的执行情况 + if (StringUtils.isEmpty(moduleFieldConfig.getObjectString())) { + //不作为当前一个单元格执行 + filePrintRegister.getParams().put(shortName, relateBizMapList); + } else { + filePrintRegister.getParams().put(shortName, objectListToString(relateBizMapList, moduleFieldConfig.getObjectString())); + } + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), relateBizMapList); + } + } + + /** + * 构建关联模块的查询参数 + * + * @param relationJson + * @param tableNameMap + * @return + */ + private List buildFieldTableDTOList(String relationJson, Map tableNameMap) { + List fieldTableDTOList = new ArrayList<>(); + List relationMapList = JSON.parseArray(relationJson, Map.class); + for (Map relationMap : relationMapList) { + //判断是否设备字段,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_ID_FIELD) || ObjectUtils.isEmpty(relationMap.get(RELATE_ID_FIELD)), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_FIELD_NULL); + }); + //判断是否有值,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_TABLE_NAME) || ObjectUtils.isEmpty(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME))), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_VALUE_NULL); + }); + //构建外键信息 + String relationIds = buildForeignKeyValue(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME)), relationMapList.size(), (String) relationMap.get(RELATE_ID_FIELD)); + //健壮性校验 + if (StringUtils.isNotEmpty(relationIds)) { + // 默认为单个关联外键 + fieldTableDTOList.add(FieldTableDTO.builder() + .foreignKeyField((String) relationMap.get(CURRENT_ID_FIELD)) + //可能存在多个情况,需要进行单表的查询 + .foreignKeyValue(relationIds) + .sqlIn(false) + .build()); + //如果ids存在,默认为多个关联外键 + if (relationIds.contains(",")) { + fieldTableDTOList.get(fieldTableDTOList.size() - 1).setSqlIn(true); + } + } + } + return fieldTableDTOList; + } + + /** + * 获取表的简称,自动生成驼峰简称 + * 1、规则是biz_user_info,根据表的情况,由于info没有实际信息意义,排除info情况,取user + * 2、如果当前集合已经含有user,则向前读取为bizUser + * 获取表定义的简称 + * + * @param tableName + * @return + */ + private String getShortName(String tableName, Map params) { + String[] tableNameFragment = tableName.split("_"); + int count = 1; + String shortTableName = tableNameFragment[tableNameFragment.length - count++]; + //排除info的情况 + if (tableNameFragment[tableNameFragment.length - 1].equals("info")) { + shortTableName = tableNameFragment[tableNameFragment.length - count++]; + } + //再次进行查询 + while (params.containsKey(shortTableName) && count < tableNameFragment.length) { + shortTableName = tableNameFragment[tableNameFragment.length - count++] + shortTableName.substring(0, 1).toUpperCase() + shortTableName.substring(1); + } + return shortTableName; + } + + + //当前表的字段作为单元格中string内容,执行一下操作 + private String objectListToString(List> relateBizMapList, String objectString) { + String[] objectFieldStr = objectString.split(","); + String relateBizStr = ""; + for (Map relateBizMap : relateBizMapList) { + for (String objectField : objectFieldStr) { + relateBizStr += ObjectUtils.isNotEmpty(relateBizMap.get(objectField)) ? + (String) relateBizMap.get(objectField) : "无"; + relateBizStr += ","; + } + relateBizStr = relateBizStr.substring(0, relateBizStr.length() - 1); + relateBizStr += ";\n"; + } + return relateBizStr; + } + + /** + * 构建外键和值得关系 + * + * @param relationObject + * @param relateListSize + * @param relateIdField + * @return + */ + private String buildForeignKeyValue(Object relationObject, Integer relateListSize, String relateIdField) { + //健壮性的校验 + if (StringUtils.isEmpty(relateIdField)) { + return null; + } + //如果是list集合,进行list ids的组装 + if (relationObject instanceof List) { + String relationIds = ""; + if (relateListSize == 1) { + List relationObjectList = (List) relationObject; + for (Map relationMap : relationObjectList) { + if (relationMap.containsKey(relateIdField)) { + relationIds += (Long) relationMap.get(relateIdField); + relationIds += ","; + } else { + return null; + } + } + relationIds = relationIds.substring(0, relationIds.length() - 1); + return relationIds; + } + } + //如果是map集合,说明是单个集合,只有一个外键 + if (relationObject instanceof Map) { + Map relationMap = (Map) relationObject; + if (relationMap.containsKey(relateIdField)) { + String relationIds = (Long) relationMap.get(relateIdField) + ""; + return relationIds; + } + } + return null; + } + + /** + * 模块内容元素构建1、字典信息 2、关键字图片信息 + */ + protected void buildModuleElement(Map metaDataMap, ModuleFieldConfig moduleFieldConfig, FilePrintRegister filePrintRegister) { + //字典信息 + String dictJson = moduleFieldConfig.getDictJson(); + if (StringUtils.isNotEmpty(dictJson)) { + //处理字典信息 + List dictMapList = JSON.parseArray(dictJson, Map.class); + for (Map dictCodeMap : dictMapList) { + convertDictCode((String) dictCodeMap.get(CODE), (String) dictCodeMap.get(FILED_NAME), metaDataMap); + } + } + /** + * 构建图片json元素 + */ + buildDocImageElement(metaDataMap, filePrintRegister, moduleFieldConfig.getImageJson()); + } + + + /** + * 构建文件图片元素 + * + * @param metaDataMap + * @param filePrintRegister + * @param imageJson + */ + private void buildDocImageElement(Map metaDataMap, FilePrintRegister filePrintRegister, String imageJson) { + if (StringUtils.isNotEmpty(imageJson)) { + //获取审批流程的bean + JSONObject imageMap = JSON.parseObject(imageJson); + //处理图片信息 + List imageMapList = (List) imageMap.get(BIND_KEY_LIST); + //判断是否有工作流字段(approvalField,工作流map取出 + ElectronicSignSeal.approvalImage(metaDataMap,imageMap,imageMapList,filePrintRegister); + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(ObjectUtils.isEmpty(imageMap.get(BIND_KEY_LIST)), + () -> { + throw new BusinessException(BusinessExceptionEnum.BIND_KEY_LIST_NULL); + }); + //执行构建关键字图片集合,默认为不会在列表中构建图片 + ElectronicSignSeal.bindPictureKey(filePrintRegister, imageMapList, metaDataMap); + } + } + + + /** + * 字典转换 + * + * @param code + * @param dictField + * @param metaDataMap + */ + private void convertDictCode(String code, String dictField, Map metaDataMap) { + if (StringUtils.isEmpty(code)) { + throw new BusinessException(2404, "缓存名不能为空"); + } + String codeValue = ""; + if (ObjectUtils.isEmpty(metaDataMap.get(dictField))) { + throw new BusinessException(2405, "缓存值不能为空"); + } else { + codeValue = (String) metaDataMap.get(dictField); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + String name = dictService.getDictNameByCode(code, codeValue); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(2406, "字典配置查询错误"); + } + String destFieldName = dictField + "Name"; + metaDataMap.put(destFieldName, name); + } + + /** + * 遍历当前map,进行时间格式的转换 + * + * @param map + */ + protected void convertMapDate(Map map) { + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof Timestamp) { + String timeStr = DateFormatUtils.format((Timestamp) entry.getValue(), "yyyy-MM-dd HH:mm:ss", Locale.CHINESE); + map.put(entry.getKey(), timeStr); + } + } + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java new file mode 100644 index 0000000..c297633 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -0,0 +1,105 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.certificate.ElectronicImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author cz + * @date 2023-8-15 + */ +public class ElectronicSignTemplate { + + /** + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-20f) + .horizontal(50f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicImage(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(10f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签名的图片设置,支持重写 + */ + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 自动生成是根据宽度设定取空隙平均值 + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static List autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) { + List electronicImageList = new ArrayList<>(); + ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal(""); + Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ? + 0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1); + ElectronicImage electronicImage = null; + Float tempIntervalWith = intervalWith; + for (int i = 0; i < sealsNumber; i++) { + electronicImage = defaultAbsoluteElectronicSignSeal(""); + electronicImage.setHorizontal(tempIntervalWith); + tempIntervalWith += intervalWith + templateElectronic.getStampWidth(); + electronicImageList.add(electronicImage); + } + return electronicImageList; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java new file mode 100644 index 0000000..fbbca76 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java @@ -0,0 +1,457 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.ModuleFieldMapper; +import com.casic.missiles.mapper.file.ModuleTemplatePrintMapper; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import javax.annotation.Resource; +import java.io.File; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author cz + * @date 2023-8-14 + */ +public class FilePrintSupport implements FilePrintEnum { + + @Resource + private ModuleFieldMapper moduleFieldMapper; + @Resource + private ModuleTemplatePrintMapper moduleTemplatePrintMapper; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + //查询模板id,获取模板的minFileName + String templateName = fileRegisterMapper.getTemplateFileById(moduleTemplatePrintConfig.getTemplateFileId()); + filePrintRegister.setFileName(templateName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + templateName); + filePrintRegister.setFileNameId(id); + //添加模板到待下载列表 + List fileNames = new ArrayList<>(); + fileNames.add(templateName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + //这里需要添加电子签章 + ElectronicSignSeal.electronicNoKeySignSeals(moduleTemplatePrintConfig.getSigns(), filePrintRegister); + //添加默认的参数 + filePrintRegister.setParams(populateDefaultParam()); + return filePrintRegister; + } + + /** + * 新增填充默认参数 + */ + private Map populateDefaultParam() { + Map param = new HashMap<>(); + param.put("currentDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())); + param.put("currentTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + return param; + } + + /** + * 获取关联表配置 + * + * @param relateModuleIds + * @return + */ + protected List getRelateModuleFieldConfig(String relateModuleIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List relateModuleIdList = new ArrayList<>(); + String[] typeStr = relateModuleIds.split(","); + for (int i = 0; i < typeStr.length; i++) { + relateModuleIdList.add(Long.valueOf(typeStr[i])); + } + queryWrapper.in("id", relateModuleIdList); + List moduleFieldConfigList = moduleFieldMapper.selectList(queryWrapper); + return moduleFieldConfigList; + } + + /** + * ' + * 获取模块配置 + * + * @param moduleName + * @param moduleType + * @return + */ + protected ModuleTemplatePrintConfig getModuleTemplatePrintConfig(String moduleName, String moduleType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("module_name", moduleName); + queryWrapper.eq(StringUtils.isNotEmpty(moduleType), "module_type", moduleType); + List moduleFieldConfigList = moduleTemplatePrintMapper.selectList(queryWrapper); + Optional optionalModuleConfig = moduleFieldConfigList.stream().findFirst(); + return optionalModuleConfig.isPresent() ? optionalModuleConfig.get() : null; + } + + /** + * 当前模块的信息 + * + * @param filePrintRegister 打印注册信息 + * @param moduleFieldId 模块文件id + * @param moduleIdValue + * @return 返回类型的数据 + */ + protected Map moduleField(FilePrintRegister filePrintRegister, Long moduleFieldId, Long moduleIdValue) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //获取当前模块对应的信息 + List> metaDataList = moduleFieldMapper.getBizMapList(moduleFieldConfig.getTableName(), moduleIdValue); + Map tableNameMap = new HashMap<>(); + if (metaDataList.size() == 1) { + Map metaDataMap = metaDataList.get(0); + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + filePrintRegister.setParams(metaDataMap); + //时间格式的转换,统一处理 + convertMapDate(metaDataMap); + } else if (metaDataList.size() > 0) { + int count = 1; + for (Map relateBizMap : metaDataList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : metaDataList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + filePrintRegister.getParams().put(shortName, metaDataList); + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), metaDataList); + return tableNameMap; + } + + + //空的,留作扩展使用 + protected void moduleCustomizedProcessing(FilePrintRegister filePrintRegister, + Map customParam, + ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + if (ObjectUtils.isNotEmpty(moduleFieldId)) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //构建图片元素 + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + if (StringUtils.isNotEmpty(relateModuleIds)) { + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //构建图片元素 + for (ModuleFieldConfig moduleFieldConfig : moduleFieldConfigs) { + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + } + //处理map中的自带的图片参数 + if (Objects.nonNull(filePrintRegister.getParams())) { + filePrintRegister.getParams().putAll(customParam); + } else { + filePrintRegister.setParams(customParam); + } + + } + + /** + * 相当于消费存在一定的顺序 + * + * @param tableNameMap 前置执行表结果的缓存 + * @param filePrintRegister 打印注册信息 + * @param moduleFieldConfig 模块配置信息 + * @return 返回类型的数据 + */ + protected void relateModuleField(FilePrintRegister filePrintRegister, + Map tableNameMap, + ModuleFieldConfig moduleFieldConfig) { + //健壮性校验,没有关联关系,直接退出 + if (StringUtils.isEmpty(moduleFieldConfig.getRelationJson())) { + return; + } + //构建查询参数 + List fieldTableDTOList = buildFieldTableDTOList(moduleFieldConfig.getRelationJson(), tableNameMap); + //健壮性校验 + if (CollectionUtils.isNotEmpty(fieldTableDTOList)) { + List> relateBizMapList = null; + //当前集合的长度为1,且设置的in查询为true,可以执行外键 + if (fieldTableDTOList.size() == 1 && fieldTableDTOList.get(0).getSqlIn()) { + List relateIdList = new ArrayList<>(); + String[] typeStr = fieldTableDTOList.get(0).getForeignKeyValue().split(","); + for (int i = 0; i < typeStr.length; i++) { + relateIdList.add(Long.valueOf(typeStr[i])); + } + //执行关联表“in”查询 + relateBizMapList = moduleFieldMapper.inRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList.get(0).getForeignKeyField(), relateIdList); + } else { + //执行关联表“=”号查询 + relateBizMapList = moduleFieldMapper.equalRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList); + } + //健壮性校验 + if (CollectionUtils.isEmpty(relateBizMapList)) { + return; + } + //判断是否是用于doc填充 + if (ObjectUtils.isNotEmpty(moduleFieldConfig.getDocUse()) && 1 == moduleFieldConfig.getDocUse()) { + int count = 1; + for (Map relateBizMap : relateBizMapList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : relateBizMapList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //判断当前模块信息在单元格中的执行情况 + if (StringUtils.isEmpty(moduleFieldConfig.getObjectString())) { + //不作为当前一个单元格执行 + filePrintRegister.getParams().put(shortName, relateBizMapList); + } else { + filePrintRegister.getParams().put(shortName, objectListToString(relateBizMapList, moduleFieldConfig.getObjectString())); + } + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), relateBizMapList); + } + } + + /** + * 构建关联模块的查询参数 + * + * @param relationJson + * @param tableNameMap + * @return + */ + private List buildFieldTableDTOList(String relationJson, Map tableNameMap) { + List fieldTableDTOList = new ArrayList<>(); + List relationMapList = JSON.parseArray(relationJson, Map.class); + for (Map relationMap : relationMapList) { + //判断是否设备字段,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_ID_FIELD) || ObjectUtils.isEmpty(relationMap.get(RELATE_ID_FIELD)), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_FIELD_NULL); + }); + //判断是否有值,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_TABLE_NAME) || ObjectUtils.isEmpty(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME))), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_VALUE_NULL); + }); + //构建外键信息 + String relationIds = buildForeignKeyValue(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME)), relationMapList.size(), (String) relationMap.get(RELATE_ID_FIELD)); + //健壮性校验 + if (StringUtils.isNotEmpty(relationIds)) { + // 默认为单个关联外键 + fieldTableDTOList.add(FieldTableDTO.builder() + .foreignKeyField((String) relationMap.get(CURRENT_ID_FIELD)) + //可能存在多个情况,需要进行单表的查询 + .foreignKeyValue(relationIds) + .sqlIn(false) + .build()); + //如果ids存在,默认为多个关联外键 + if (relationIds.contains(",")) { + fieldTableDTOList.get(fieldTableDTOList.size() - 1).setSqlIn(true); + } + } + } + return fieldTableDTOList; + } + + /** + * 获取表的简称,自动生成驼峰简称 + * 1、规则是biz_user_info,根据表的情况,由于info没有实际信息意义,排除info情况,取user + * 2、如果当前集合已经含有user,则向前读取为bizUser + * 获取表定义的简称 + * + * @param tableName + * @return + */ + private String getShortName(String tableName, Map params) { + String[] tableNameFragment = tableName.split("_"); + int count = 1; + String shortTableName = tableNameFragment[tableNameFragment.length - count++]; + //排除info的情况 + if (tableNameFragment[tableNameFragment.length - 1].equals("info")) { + shortTableName = tableNameFragment[tableNameFragment.length - count++]; + } + //再次进行查询 + while (params.containsKey(shortTableName) && count < tableNameFragment.length) { + shortTableName = tableNameFragment[tableNameFragment.length - count++] + shortTableName.substring(0, 1).toUpperCase() + shortTableName.substring(1); + } + return shortTableName; + } + + + //当前表的字段作为单元格中string内容,执行一下操作 + private String objectListToString(List> relateBizMapList, String objectString) { + String[] objectFieldStr = objectString.split(","); + String relateBizStr = ""; + for (Map relateBizMap : relateBizMapList) { + for (String objectField : objectFieldStr) { + relateBizStr += ObjectUtils.isNotEmpty(relateBizMap.get(objectField)) ? + (String) relateBizMap.get(objectField) : "无"; + relateBizStr += ","; + } + relateBizStr = relateBizStr.substring(0, relateBizStr.length() - 1); + relateBizStr += ";\n"; + } + return relateBizStr; + } + + /** + * 构建外键和值得关系 + * + * @param relationObject + * @param relateListSize + * @param relateIdField + * @return + */ + private String buildForeignKeyValue(Object relationObject, Integer relateListSize, String relateIdField) { + //健壮性的校验 + if (StringUtils.isEmpty(relateIdField)) { + return null; + } + //如果是list集合,进行list ids的组装 + if (relationObject instanceof List) { + String relationIds = ""; + if (relateListSize == 1) { + List relationObjectList = (List) relationObject; + for (Map relationMap : relationObjectList) { + if (relationMap.containsKey(relateIdField)) { + relationIds += (Long) relationMap.get(relateIdField); + relationIds += ","; + } else { + return null; + } + } + relationIds = relationIds.substring(0, relationIds.length() - 1); + return relationIds; + } + } + //如果是map集合,说明是单个集合,只有一个外键 + if (relationObject instanceof Map) { + Map relationMap = (Map) relationObject; + if (relationMap.containsKey(relateIdField)) { + String relationIds = (Long) relationMap.get(relateIdField) + ""; + return relationIds; + } + } + return null; + } + + /** + * 模块内容元素构建1、字典信息 2、关键字图片信息 + */ + protected void buildModuleElement(Map metaDataMap, ModuleFieldConfig moduleFieldConfig, FilePrintRegister filePrintRegister) { + //字典信息 + String dictJson = moduleFieldConfig.getDictJson(); + if (StringUtils.isNotEmpty(dictJson)) { + //处理字典信息 + List dictMapList = JSON.parseArray(dictJson, Map.class); + for (Map dictCodeMap : dictMapList) { + convertDictCode((String) dictCodeMap.get(CODE), (String) dictCodeMap.get(FILED_NAME), metaDataMap); + } + } + /** + * 构建图片json元素 + */ + buildDocImageElement(metaDataMap, filePrintRegister, moduleFieldConfig.getImageJson()); + } + + + /** + * 构建文件图片元素 + * + * @param metaDataMap + * @param filePrintRegister + * @param imageJson + */ + private void buildDocImageElement(Map metaDataMap, FilePrintRegister filePrintRegister, String imageJson) { + if (StringUtils.isNotEmpty(imageJson)) { + //获取审批流程的bean + JSONObject imageMap = JSON.parseObject(imageJson); + //处理图片信息 + List imageMapList = (List) imageMap.get(BIND_KEY_LIST); + //判断是否有工作流字段(approvalField,工作流map取出 + ElectronicSignSeal.approvalImage(metaDataMap,imageMap,imageMapList,filePrintRegister); + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(ObjectUtils.isEmpty(imageMap.get(BIND_KEY_LIST)), + () -> { + throw new BusinessException(BusinessExceptionEnum.BIND_KEY_LIST_NULL); + }); + //执行构建关键字图片集合,默认为不会在列表中构建图片 + ElectronicSignSeal.bindPictureKey(filePrintRegister, imageMapList, metaDataMap); + } + } + + + /** + * 字典转换 + * + * @param code + * @param dictField + * @param metaDataMap + */ + private void convertDictCode(String code, String dictField, Map metaDataMap) { + if (StringUtils.isEmpty(code)) { + throw new BusinessException(2404, "缓存名不能为空"); + } + String codeValue = ""; + if (ObjectUtils.isEmpty(metaDataMap.get(dictField))) { + throw new BusinessException(2405, "缓存值不能为空"); + } else { + codeValue = (String) metaDataMap.get(dictField); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + String name = dictService.getDictNameByCode(code, codeValue); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(2406, "字典配置查询错误"); + } + String destFieldName = dictField + "Name"; + metaDataMap.put(destFieldName, name); + } + + /** + * 遍历当前map,进行时间格式的转换 + * + * @param map + */ + protected void convertMapDate(Map map) { + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof Timestamp) { + String timeStr = DateFormatUtils.format((Timestamp) entry.getValue(), "yyyy-MM-dd HH:mm:ss", Locale.CHINESE); + map.put(entry.getKey(), timeStr); + } + } + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java new file mode 100644 index 0000000..536d844 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java @@ -0,0 +1,122 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-9 + */ +@Component +public class GenericFilePrintProcessor extends FilePrintSupport { + + /** + * @param moduleName 模块名称 + * @param moduleType 模块类型 + * @param moduleIdValue 当前模块信息的id值 + * @return + */ + public FilePrintRegister printFileRegister(String moduleName, String moduleType, Map customParam, Long moduleIdValue, String templateFileDir) { + //获取当前模板配置信息 + ModuleTemplatePrintConfig moduleTemplatePrintConfig = getModuleTemplatePrintConfig(moduleName, moduleType); + //判断是否有模板,没有直接抛出异常,健壮性校验 + Assert.isFalse(ObjectUtils.isEmpty(moduleTemplatePrintConfig.getTemplateFileId()), () -> { + throw new BusinessException(BusinessExceptionEnum.TEMPLATE_FILE_NULL); + }); + + //根据打印模板配置,初始化文件打印注册信息 + FilePrintRegister filePrintRegister = initialization(templateFileDir, moduleIdValue, moduleTemplatePrintConfig); + if (customParam != null) { + Assert.isFalse(ObjectUtils.isEmpty(customParam), () -> { + throw new RuntimeException("没有文件数据,请确保有数据后重试!"); + }); + //定制化的参数处理 + moduleCustomizedProcessing(filePrintRegister, customParam, moduleTemplatePrintConfig); + return filePrintRegister; + } + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + //查询当前模块主表的信息 + Map tableNameIdMap = moduleField(filePrintRegister, moduleFieldId, moduleIdValue); + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + //判空健壮性校验 + if (StringUtils.isNotEmpty(relateModuleIds)) { + //获取关联模块的配置 + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //进行关联性模块的排序,主要根据是否前置条件满足进行排序 + List sortFieldConfigList = tryRelateModuleFieldConfigs(moduleFieldConfigs, tableNameIdMap); + //1、健壮性校验 2 对责任链执行链式操作 + if (CollectionUtils.isNotEmpty(sortFieldConfigList)) { + for (ModuleFieldConfig moduleFieldConfig : sortFieldConfigList) { + relateModuleField(filePrintRegister, tableNameIdMap, moduleFieldConfig); + } + } + } + + return filePrintRegister; + } + + /** + * 预消费阶段,在当前顺序遍历中,查询条件充足的靠前,需要前置条件的表格挂起靠后执行 + * + * @param moduleFieldConfigs + */ + private List tryRelateModuleFieldConfigs(List moduleFieldConfigs, Map tableNameMap) { + if (CollectionUtils.isEmpty(moduleFieldConfigs)) { + return null; + } + List sortFieldConfig = new ArrayList<>(); + int index = 0; + while (moduleFieldConfigs.size() != 0) { + List relationJson = JSON.parseArray(moduleFieldConfigs.get(index).getRelationJson(), Map.class); + //关联表的字段是否已经获取,已经获取支持进行查询,否则挂起 + Boolean matchTableName = tryMatchTableName(relationJson, tableNameMap); + if (matchTableName) { + //添加排序的集合 + sortFieldConfig.add(moduleFieldConfigs.get(index)); + //添加到映射集合 + tableNameMap.put(moduleFieldConfigs.get(index).getTableName(), null); + //在原来的无序集合移除 + moduleFieldConfigs.remove(index); + } else { + index++; + } + //重置为0 + if (index == moduleFieldConfigs.size()) { + index = 0; + } + } + return sortFieldConfig; + } + + /** + * 预匹配阶段,在当前顺序位置中,前置表集合是否已经存在,不存在返回false + * + * @param relationJson + * @param tableNameMap + * @return + */ + private Boolean tryMatchTableName(List relationJson, Map tableNameMap) { + Boolean matchTableFlag = true; + for (Map relationMap : relationJson) { + // {"relateIdField":" cutsomerId","tableName":"{bizModuleFieldConfigId}"} + matchTableFlag &= tableNameMap.containsKey(relationMap.get(RELATE_TABLE_NAME)); + } + return matchTableFlag; + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java new file mode 100644 index 0000000..c297633 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -0,0 +1,105 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.certificate.ElectronicImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author cz + * @date 2023-8-15 + */ +public class ElectronicSignTemplate { + + /** + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-20f) + .horizontal(50f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicImage(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(10f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签名的图片设置,支持重写 + */ + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 自动生成是根据宽度设定取空隙平均值 + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static List autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) { + List electronicImageList = new ArrayList<>(); + ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal(""); + Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ? + 0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1); + ElectronicImage electronicImage = null; + Float tempIntervalWith = intervalWith; + for (int i = 0; i < sealsNumber; i++) { + electronicImage = defaultAbsoluteElectronicSignSeal(""); + electronicImage.setHorizontal(tempIntervalWith); + tempIntervalWith += intervalWith + templateElectronic.getStampWidth(); + electronicImageList.add(electronicImage); + } + return electronicImageList; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java new file mode 100644 index 0000000..fbbca76 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java @@ -0,0 +1,457 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.ModuleFieldMapper; +import com.casic.missiles.mapper.file.ModuleTemplatePrintMapper; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import javax.annotation.Resource; +import java.io.File; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author cz + * @date 2023-8-14 + */ +public class FilePrintSupport implements FilePrintEnum { + + @Resource + private ModuleFieldMapper moduleFieldMapper; + @Resource + private ModuleTemplatePrintMapper moduleTemplatePrintMapper; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + //查询模板id,获取模板的minFileName + String templateName = fileRegisterMapper.getTemplateFileById(moduleTemplatePrintConfig.getTemplateFileId()); + filePrintRegister.setFileName(templateName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + templateName); + filePrintRegister.setFileNameId(id); + //添加模板到待下载列表 + List fileNames = new ArrayList<>(); + fileNames.add(templateName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + //这里需要添加电子签章 + ElectronicSignSeal.electronicNoKeySignSeals(moduleTemplatePrintConfig.getSigns(), filePrintRegister); + //添加默认的参数 + filePrintRegister.setParams(populateDefaultParam()); + return filePrintRegister; + } + + /** + * 新增填充默认参数 + */ + private Map populateDefaultParam() { + Map param = new HashMap<>(); + param.put("currentDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())); + param.put("currentTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + return param; + } + + /** + * 获取关联表配置 + * + * @param relateModuleIds + * @return + */ + protected List getRelateModuleFieldConfig(String relateModuleIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List relateModuleIdList = new ArrayList<>(); + String[] typeStr = relateModuleIds.split(","); + for (int i = 0; i < typeStr.length; i++) { + relateModuleIdList.add(Long.valueOf(typeStr[i])); + } + queryWrapper.in("id", relateModuleIdList); + List moduleFieldConfigList = moduleFieldMapper.selectList(queryWrapper); + return moduleFieldConfigList; + } + + /** + * ' + * 获取模块配置 + * + * @param moduleName + * @param moduleType + * @return + */ + protected ModuleTemplatePrintConfig getModuleTemplatePrintConfig(String moduleName, String moduleType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("module_name", moduleName); + queryWrapper.eq(StringUtils.isNotEmpty(moduleType), "module_type", moduleType); + List moduleFieldConfigList = moduleTemplatePrintMapper.selectList(queryWrapper); + Optional optionalModuleConfig = moduleFieldConfigList.stream().findFirst(); + return optionalModuleConfig.isPresent() ? optionalModuleConfig.get() : null; + } + + /** + * 当前模块的信息 + * + * @param filePrintRegister 打印注册信息 + * @param moduleFieldId 模块文件id + * @param moduleIdValue + * @return 返回类型的数据 + */ + protected Map moduleField(FilePrintRegister filePrintRegister, Long moduleFieldId, Long moduleIdValue) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //获取当前模块对应的信息 + List> metaDataList = moduleFieldMapper.getBizMapList(moduleFieldConfig.getTableName(), moduleIdValue); + Map tableNameMap = new HashMap<>(); + if (metaDataList.size() == 1) { + Map metaDataMap = metaDataList.get(0); + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + filePrintRegister.setParams(metaDataMap); + //时间格式的转换,统一处理 + convertMapDate(metaDataMap); + } else if (metaDataList.size() > 0) { + int count = 1; + for (Map relateBizMap : metaDataList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : metaDataList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + filePrintRegister.getParams().put(shortName, metaDataList); + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), metaDataList); + return tableNameMap; + } + + + //空的,留作扩展使用 + protected void moduleCustomizedProcessing(FilePrintRegister filePrintRegister, + Map customParam, + ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + if (ObjectUtils.isNotEmpty(moduleFieldId)) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //构建图片元素 + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + if (StringUtils.isNotEmpty(relateModuleIds)) { + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //构建图片元素 + for (ModuleFieldConfig moduleFieldConfig : moduleFieldConfigs) { + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + } + //处理map中的自带的图片参数 + if (Objects.nonNull(filePrintRegister.getParams())) { + filePrintRegister.getParams().putAll(customParam); + } else { + filePrintRegister.setParams(customParam); + } + + } + + /** + * 相当于消费存在一定的顺序 + * + * @param tableNameMap 前置执行表结果的缓存 + * @param filePrintRegister 打印注册信息 + * @param moduleFieldConfig 模块配置信息 + * @return 返回类型的数据 + */ + protected void relateModuleField(FilePrintRegister filePrintRegister, + Map tableNameMap, + ModuleFieldConfig moduleFieldConfig) { + //健壮性校验,没有关联关系,直接退出 + if (StringUtils.isEmpty(moduleFieldConfig.getRelationJson())) { + return; + } + //构建查询参数 + List fieldTableDTOList = buildFieldTableDTOList(moduleFieldConfig.getRelationJson(), tableNameMap); + //健壮性校验 + if (CollectionUtils.isNotEmpty(fieldTableDTOList)) { + List> relateBizMapList = null; + //当前集合的长度为1,且设置的in查询为true,可以执行外键 + if (fieldTableDTOList.size() == 1 && fieldTableDTOList.get(0).getSqlIn()) { + List relateIdList = new ArrayList<>(); + String[] typeStr = fieldTableDTOList.get(0).getForeignKeyValue().split(","); + for (int i = 0; i < typeStr.length; i++) { + relateIdList.add(Long.valueOf(typeStr[i])); + } + //执行关联表“in”查询 + relateBizMapList = moduleFieldMapper.inRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList.get(0).getForeignKeyField(), relateIdList); + } else { + //执行关联表“=”号查询 + relateBizMapList = moduleFieldMapper.equalRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList); + } + //健壮性校验 + if (CollectionUtils.isEmpty(relateBizMapList)) { + return; + } + //判断是否是用于doc填充 + if (ObjectUtils.isNotEmpty(moduleFieldConfig.getDocUse()) && 1 == moduleFieldConfig.getDocUse()) { + int count = 1; + for (Map relateBizMap : relateBizMapList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : relateBizMapList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //判断当前模块信息在单元格中的执行情况 + if (StringUtils.isEmpty(moduleFieldConfig.getObjectString())) { + //不作为当前一个单元格执行 + filePrintRegister.getParams().put(shortName, relateBizMapList); + } else { + filePrintRegister.getParams().put(shortName, objectListToString(relateBizMapList, moduleFieldConfig.getObjectString())); + } + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), relateBizMapList); + } + } + + /** + * 构建关联模块的查询参数 + * + * @param relationJson + * @param tableNameMap + * @return + */ + private List buildFieldTableDTOList(String relationJson, Map tableNameMap) { + List fieldTableDTOList = new ArrayList<>(); + List relationMapList = JSON.parseArray(relationJson, Map.class); + for (Map relationMap : relationMapList) { + //判断是否设备字段,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_ID_FIELD) || ObjectUtils.isEmpty(relationMap.get(RELATE_ID_FIELD)), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_FIELD_NULL); + }); + //判断是否有值,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_TABLE_NAME) || ObjectUtils.isEmpty(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME))), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_VALUE_NULL); + }); + //构建外键信息 + String relationIds = buildForeignKeyValue(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME)), relationMapList.size(), (String) relationMap.get(RELATE_ID_FIELD)); + //健壮性校验 + if (StringUtils.isNotEmpty(relationIds)) { + // 默认为单个关联外键 + fieldTableDTOList.add(FieldTableDTO.builder() + .foreignKeyField((String) relationMap.get(CURRENT_ID_FIELD)) + //可能存在多个情况,需要进行单表的查询 + .foreignKeyValue(relationIds) + .sqlIn(false) + .build()); + //如果ids存在,默认为多个关联外键 + if (relationIds.contains(",")) { + fieldTableDTOList.get(fieldTableDTOList.size() - 1).setSqlIn(true); + } + } + } + return fieldTableDTOList; + } + + /** + * 获取表的简称,自动生成驼峰简称 + * 1、规则是biz_user_info,根据表的情况,由于info没有实际信息意义,排除info情况,取user + * 2、如果当前集合已经含有user,则向前读取为bizUser + * 获取表定义的简称 + * + * @param tableName + * @return + */ + private String getShortName(String tableName, Map params) { + String[] tableNameFragment = tableName.split("_"); + int count = 1; + String shortTableName = tableNameFragment[tableNameFragment.length - count++]; + //排除info的情况 + if (tableNameFragment[tableNameFragment.length - 1].equals("info")) { + shortTableName = tableNameFragment[tableNameFragment.length - count++]; + } + //再次进行查询 + while (params.containsKey(shortTableName) && count < tableNameFragment.length) { + shortTableName = tableNameFragment[tableNameFragment.length - count++] + shortTableName.substring(0, 1).toUpperCase() + shortTableName.substring(1); + } + return shortTableName; + } + + + //当前表的字段作为单元格中string内容,执行一下操作 + private String objectListToString(List> relateBizMapList, String objectString) { + String[] objectFieldStr = objectString.split(","); + String relateBizStr = ""; + for (Map relateBizMap : relateBizMapList) { + for (String objectField : objectFieldStr) { + relateBizStr += ObjectUtils.isNotEmpty(relateBizMap.get(objectField)) ? + (String) relateBizMap.get(objectField) : "无"; + relateBizStr += ","; + } + relateBizStr = relateBizStr.substring(0, relateBizStr.length() - 1); + relateBizStr += ";\n"; + } + return relateBizStr; + } + + /** + * 构建外键和值得关系 + * + * @param relationObject + * @param relateListSize + * @param relateIdField + * @return + */ + private String buildForeignKeyValue(Object relationObject, Integer relateListSize, String relateIdField) { + //健壮性的校验 + if (StringUtils.isEmpty(relateIdField)) { + return null; + } + //如果是list集合,进行list ids的组装 + if (relationObject instanceof List) { + String relationIds = ""; + if (relateListSize == 1) { + List relationObjectList = (List) relationObject; + for (Map relationMap : relationObjectList) { + if (relationMap.containsKey(relateIdField)) { + relationIds += (Long) relationMap.get(relateIdField); + relationIds += ","; + } else { + return null; + } + } + relationIds = relationIds.substring(0, relationIds.length() - 1); + return relationIds; + } + } + //如果是map集合,说明是单个集合,只有一个外键 + if (relationObject instanceof Map) { + Map relationMap = (Map) relationObject; + if (relationMap.containsKey(relateIdField)) { + String relationIds = (Long) relationMap.get(relateIdField) + ""; + return relationIds; + } + } + return null; + } + + /** + * 模块内容元素构建1、字典信息 2、关键字图片信息 + */ + protected void buildModuleElement(Map metaDataMap, ModuleFieldConfig moduleFieldConfig, FilePrintRegister filePrintRegister) { + //字典信息 + String dictJson = moduleFieldConfig.getDictJson(); + if (StringUtils.isNotEmpty(dictJson)) { + //处理字典信息 + List dictMapList = JSON.parseArray(dictJson, Map.class); + for (Map dictCodeMap : dictMapList) { + convertDictCode((String) dictCodeMap.get(CODE), (String) dictCodeMap.get(FILED_NAME), metaDataMap); + } + } + /** + * 构建图片json元素 + */ + buildDocImageElement(metaDataMap, filePrintRegister, moduleFieldConfig.getImageJson()); + } + + + /** + * 构建文件图片元素 + * + * @param metaDataMap + * @param filePrintRegister + * @param imageJson + */ + private void buildDocImageElement(Map metaDataMap, FilePrintRegister filePrintRegister, String imageJson) { + if (StringUtils.isNotEmpty(imageJson)) { + //获取审批流程的bean + JSONObject imageMap = JSON.parseObject(imageJson); + //处理图片信息 + List imageMapList = (List) imageMap.get(BIND_KEY_LIST); + //判断是否有工作流字段(approvalField,工作流map取出 + ElectronicSignSeal.approvalImage(metaDataMap,imageMap,imageMapList,filePrintRegister); + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(ObjectUtils.isEmpty(imageMap.get(BIND_KEY_LIST)), + () -> { + throw new BusinessException(BusinessExceptionEnum.BIND_KEY_LIST_NULL); + }); + //执行构建关键字图片集合,默认为不会在列表中构建图片 + ElectronicSignSeal.bindPictureKey(filePrintRegister, imageMapList, metaDataMap); + } + } + + + /** + * 字典转换 + * + * @param code + * @param dictField + * @param metaDataMap + */ + private void convertDictCode(String code, String dictField, Map metaDataMap) { + if (StringUtils.isEmpty(code)) { + throw new BusinessException(2404, "缓存名不能为空"); + } + String codeValue = ""; + if (ObjectUtils.isEmpty(metaDataMap.get(dictField))) { + throw new BusinessException(2405, "缓存值不能为空"); + } else { + codeValue = (String) metaDataMap.get(dictField); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + String name = dictService.getDictNameByCode(code, codeValue); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(2406, "字典配置查询错误"); + } + String destFieldName = dictField + "Name"; + metaDataMap.put(destFieldName, name); + } + + /** + * 遍历当前map,进行时间格式的转换 + * + * @param map + */ + protected void convertMapDate(Map map) { + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof Timestamp) { + String timeStr = DateFormatUtils.format((Timestamp) entry.getValue(), "yyyy-MM-dd HH:mm:ss", Locale.CHINESE); + map.put(entry.getKey(), timeStr); + } + } + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java new file mode 100644 index 0000000..536d844 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java @@ -0,0 +1,122 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-9 + */ +@Component +public class GenericFilePrintProcessor extends FilePrintSupport { + + /** + * @param moduleName 模块名称 + * @param moduleType 模块类型 + * @param moduleIdValue 当前模块信息的id值 + * @return + */ + public FilePrintRegister printFileRegister(String moduleName, String moduleType, Map customParam, Long moduleIdValue, String templateFileDir) { + //获取当前模板配置信息 + ModuleTemplatePrintConfig moduleTemplatePrintConfig = getModuleTemplatePrintConfig(moduleName, moduleType); + //判断是否有模板,没有直接抛出异常,健壮性校验 + Assert.isFalse(ObjectUtils.isEmpty(moduleTemplatePrintConfig.getTemplateFileId()), () -> { + throw new BusinessException(BusinessExceptionEnum.TEMPLATE_FILE_NULL); + }); + + //根据打印模板配置,初始化文件打印注册信息 + FilePrintRegister filePrintRegister = initialization(templateFileDir, moduleIdValue, moduleTemplatePrintConfig); + if (customParam != null) { + Assert.isFalse(ObjectUtils.isEmpty(customParam), () -> { + throw new RuntimeException("没有文件数据,请确保有数据后重试!"); + }); + //定制化的参数处理 + moduleCustomizedProcessing(filePrintRegister, customParam, moduleTemplatePrintConfig); + return filePrintRegister; + } + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + //查询当前模块主表的信息 + Map tableNameIdMap = moduleField(filePrintRegister, moduleFieldId, moduleIdValue); + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + //判空健壮性校验 + if (StringUtils.isNotEmpty(relateModuleIds)) { + //获取关联模块的配置 + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //进行关联性模块的排序,主要根据是否前置条件满足进行排序 + List sortFieldConfigList = tryRelateModuleFieldConfigs(moduleFieldConfigs, tableNameIdMap); + //1、健壮性校验 2 对责任链执行链式操作 + if (CollectionUtils.isNotEmpty(sortFieldConfigList)) { + for (ModuleFieldConfig moduleFieldConfig : sortFieldConfigList) { + relateModuleField(filePrintRegister, tableNameIdMap, moduleFieldConfig); + } + } + } + + return filePrintRegister; + } + + /** + * 预消费阶段,在当前顺序遍历中,查询条件充足的靠前,需要前置条件的表格挂起靠后执行 + * + * @param moduleFieldConfigs + */ + private List tryRelateModuleFieldConfigs(List moduleFieldConfigs, Map tableNameMap) { + if (CollectionUtils.isEmpty(moduleFieldConfigs)) { + return null; + } + List sortFieldConfig = new ArrayList<>(); + int index = 0; + while (moduleFieldConfigs.size() != 0) { + List relationJson = JSON.parseArray(moduleFieldConfigs.get(index).getRelationJson(), Map.class); + //关联表的字段是否已经获取,已经获取支持进行查询,否则挂起 + Boolean matchTableName = tryMatchTableName(relationJson, tableNameMap); + if (matchTableName) { + //添加排序的集合 + sortFieldConfig.add(moduleFieldConfigs.get(index)); + //添加到映射集合 + tableNameMap.put(moduleFieldConfigs.get(index).getTableName(), null); + //在原来的无序集合移除 + moduleFieldConfigs.remove(index); + } else { + index++; + } + //重置为0 + if (index == moduleFieldConfigs.size()) { + index = 0; + } + } + return sortFieldConfig; + } + + /** + * 预匹配阶段,在当前顺序位置中,前置表集合是否已经存在,不存在返回false + * + * @param relationJson + * @param tableNameMap + * @return + */ + private Boolean tryMatchTableName(List relationJson, Map tableNameMap) { + Boolean matchTableFlag = true; + for (Map relationMap : relationJson) { + // {"relateIdField":" cutsomerId","tableName":"{bizModuleFieldConfigId}"} + matchTableFlag &= tableNameMap.containsKey(relationMap.get(RELATE_TABLE_NAME)); + } + return matchTableFlag; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java new file mode 100644 index 0000000..9b01b5c --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java @@ -0,0 +1,387 @@ +package com.casic.missiles.service.listeners.util; + +import cn.afterturn.easypoi.cache.WordCache; +import cn.afterturn.easypoi.entity.ImageEntity; +import cn.afterturn.easypoi.util.PoiPublicUtil; +import cn.afterturn.easypoi.word.entity.MyXWPFDocument; +import cn.afterturn.easypoi.word.entity.params.ExcelListEntity; +import cn.afterturn.easypoi.word.parse.excel.ExcelEntityParse; +import cn.afterturn.easypoi.word.parse.excel.ExcelMapParse; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigInteger; +import java.util.*; +import java.util.stream.Collectors; + +/** + * poi 类不满足列循环格式插入,修改源码后满足 + */ +public class ParseWord07 { + private static final Logger LOGGER = LoggerFactory.getLogger(cn.afterturn.easypoi.word.parse.ParseWord07.class); + + public ParseWord07() { + } + + /** + * word 解析入口类 + * + * @param url + * @param map + * @return + * @throws Exception + */ + public XWPFDocument parseWord(String url, Map map) throws Exception { + MyXWPFDocument doc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(doc, map); + return doc; + } + + /** + * 处理段落的{{ }}内容 + * 处理 + * + * @param doc + * @param map + * @throws Exception + */ + private void parseWordSetValue(MyXWPFDocument doc, Map map) throws Exception { + this.parseAllParagraph(doc.getParagraphs(), map); + this.parseHeaderAndFoot(doc, map); + Iterator itTable = doc.getTablesIterator(); + //处理表格替换 + while (itTable.hasNext()) { + XWPFTable table = (XWPFTable) itTable.next(); + if (table.getText().indexOf("{{") != -1) { + this.parseThisTable(table, map); + } + } + } + + /** + * 处理word中包含所有的段落 + * + * @param paragraphs + * @param map + * @throws Exception + */ + private void parseAllParagraph(List paragraphs, Map map) throws Exception { + for (int i = 0; i < paragraphs.size(); ++i) { + XWPFParagraph paragraph = (XWPFParagraph) paragraphs.get(i); + if (paragraph.getText().indexOf("{{") != -1) { + this.parseThisParagraph(paragraph, map); + } + } + } + + /** + * 核心替换方法 + *

+ * 段落处理段落,执行替换的情况 + * + * @param paragraph + * @param currentRun + * @param currentText 当前内容 + * @param runIndex 当前内容对应的下标 + * @param map 要替换成的参数集合 + * @throws Exception + */ + private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, List runIndex, Map map) throws Exception { + if (currentText.contains("fe:") && currentText.startsWith("{{")) { + currentText = currentText.replace("fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = currentText.replaceAll("\\s{1,}", " ").trim().split(" "); + List list = (List) PoiPublicUtil.getParamsValue(keys[0], map); + list.forEach((objx) -> { + if (objx instanceof ImageEntity) { + currentRun.setText("", 0); + ExcelMapParse.addAnImage((ImageEntity) objx, currentRun); + } else { + PoiPublicUtil.setWordText(currentRun, objx.toString()); + } + }); + } else { + Object obj = PoiPublicUtil.getRealValue(currentText, map); + if (obj instanceof ImageEntity) { + currentRun.setText("", 0); + ExcelMapParse.addAnImage((ImageEntity) obj, currentRun); + } else { + currentText = obj.toString(); + PoiPublicUtil.setWordText(currentRun, currentText); + } + } + for (int k = 0; k < runIndex.size(); ++k) { + ((XWPFRun) paragraph.getRuns().get((Integer) runIndex.get(k))).setText("", 0); + } + runIndex.clear(); + } + + //先执行预匹配,获取最大的长度,在进行之下的扩容 + private Integer checkTableMaxColLength(List cells, Map map, Integer maxExpansionLength) throws Exception { + int cellIndex = 0; + while (cellIndex < cells.size()) { + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("#fe:") && text.startsWith("{{")) { + break; + } + cellIndex++; + } + //匹配失败 + if (cellIndex >= cells.size()) { + return maxExpansionLength; + } + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("#fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + String[] paramKeys = keys[0].split("\\."); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + if (result instanceof List) { + List> resultMap = (List>) result; + List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); + return maxExpansionLength > resultList.size() ? maxExpansionLength : cellIndex + 1 + resultList.size(); + } + } + return maxExpansionLength; + } + + //先执行预匹配,获取最大的长度,在进行之下的扩容 + private Boolean checkThisTableCellIterator(List cells, XWPFTable table, + Map map, int row, Integer maxExpansionLength, Integer differExpansionLength) throws Exception { + int cellIndex = 0; + while (cellIndex < cells.size()) { + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("#fe:") && text.startsWith("{{")) { + break; + } + cellIndex++; + } + int currentIndex = cells.size() - 1; + //涉及扩容 + while (cells.size() - currentIndex < differExpansionLength) { + cells.get(0).getTableRow().createCell(); + } + //合并,且去除合并包含都是一列的情况 + if (currentIndex + 1 < (maxExpansionLength - differExpansionLength)) { + //列合并 + mergeCellsHorizontal(cells, currentIndex, currentIndex + differExpansionLength - 1); + } + if (cellIndex >= currentIndex) { + return false; + } + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("#fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + String[] paramKeys = keys[0].split("\\."); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + if (result instanceof List) { + List> resultMap = (List>) result; + List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); + int resultIndex = 0; + //清理参数 + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + //涉及扩容 + Integer differCol = cells.size() - cellIndex; + BigInteger weight = table.getCTTbl().getTblGrid().getGridColList().get(0).getW(); + for (CTTblGridCol ctTblGridCol : table.getCTTbl().getTblGrid().getGridColList()) { + ctTblGridCol.setW(weight); + } + //改变不了原来的格式,例如光标位置 + while (resultIndex < resultList.size() && cellIndex < cells.size()) { + if (resultIndex >= differCol) { + CTTbl currentTbl = table.getCTTbl(); + CTTblGrid tblGrid = currentTbl.getTblGrid() != null ? currentTbl.getTblGrid() + : currentTbl.addNewTblGrid(); + tblGrid.addNewGridCol().setW(weight); + } + cells.get(cellIndex).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); + cells.get(cellIndex++).setText(String.valueOf(resultList.get(resultIndex++))); + } + return true; + } + } + return false; + } + + public void mergeCellsHorizontal(List cells, int fromCell, int toCell) { + for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) { + XWPFTableCell cell = cells.get(cellIndex); + if (cellIndex == fromCell) { + // The first merged cell is set with RESTART merge value + cell.getCTTc().getTcPr().addNewHMerge().setVal(STMerge.RESTART); + } else { + // Cells which join (merge) the first one, are set with CONTINUE + cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); + } + } + } + + private static void clearParagraphText(List paragraphs) { + paragraphs.forEach((pp) -> { + if (pp.getRuns() != null) { + for (int i = pp.getRuns().size() - 1; i >= 0; --i) { + pp.removeRun(i); + } + } + }); + } + + private Object checkThisTableIsNeedIterator(XWPFTableCell cell, Map map) throws Exception { + String text = cell.getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("!fe:", "").replace("$fe:", "").replace("fe:", "").replace("{{", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + return Objects.nonNull(result) ? result : new ArrayList(0); + } else { + return null; + } + } + + private void parseThisParagraph(XWPFParagraph paragraph, Map map) throws Exception { + XWPFRun currentRun = null; + String currentText = ""; + Boolean isfinde = false; + List runIndex = new ArrayList(); + for (int i = 0; i < paragraph.getRuns().size(); ++i) { + XWPFRun run = (XWPFRun) paragraph.getRuns().get(i); + String text = run.getText(0); + if (!StringUtils.isEmpty(text)) { + //处理循环机制的{{}} + if (isfinde) { + currentText = currentText + text; + if (currentText.indexOf("{{") == -1) { + isfinde = false; + runIndex.clear(); + } else { + runIndex.add(i); + } + if (currentText.indexOf("}}") != -1) { + this.changeValues(paragraph, currentRun, currentText, runIndex, map); + currentText = ""; + isfinde = false; + } + //处理单个{{}} + } else if (text.indexOf("{{") >= 0) { + currentText = text; + isfinde = true; + currentRun = run; + } else { + currentText = ""; + } + // 真实替换处理单个{{}} + if (currentText.indexOf("}}") != -1) { + this.changeValues(paragraph, currentRun, currentText, runIndex, map); + isfinde = false; + } + } + } + + } + + private void parseThisRow(List cells, Map map) throws Exception { + Iterator var3 = cells.iterator(); + while (var3.hasNext()) { + XWPFTableCell cell = (XWPFTableCell) var3.next(); + this.parseAllParagraph(cell.getParagraphs(), map); + } + + } + + private void parseThisTable(XWPFTable table, Map map) throws Exception { + //默认为当前单元格的长度 + Integer maxExpansionLength = table.getRow(0).getTableCells().size(); +// //预匹配,获取扩展的最大长度 + for (int i = 0; i < table.getNumberOfRows(); ++i) { + XWPFTableRow row = table.getRow(i); + List cells = row.getTableCells(); + maxExpansionLength = checkTableMaxColLength(cells, map, maxExpansionLength); + } + Integer differExpansionLength = maxExpansionLength - table.getRow(0).getTableCells().size(); + //执行匹配,进行行列扩展 + for (int i = 0; i < table.getNumberOfRows(); ++i) { + XWPFTableRow row = table.getRow(i); + List cells = row.getTableCells(); + //增加对该行列的检测 + checkThisTableCellIterator(cells, table, map, i, maxExpansionLength, differExpansionLength); + //检测该行的首个字母是否是 + Object listobj = this.checkThisTableIsNeedIterator((XWPFTableCell) cells.get(0), map); + if (listobj == null) { + this.parseThisRow(cells, map); + } else if (listobj instanceof ExcelListEntity) { + (new ExcelEntityParse()).parseNextRowAndAddRow(table, i, (ExcelListEntity) listobj); + i = i + ((ExcelListEntity) listobj).getList().size() - 1; + } else { + ExcelMapParse.parseNextRowAndAddRow(table, i, (List) listobj); + i = i + ((List) listobj).size() - 1; + } + } + + } + + + public XWPFDocument parseWord(String url, List> list) throws Exception { + if (list != null && list.size() != 0) { + if (list.size() == 1) { + return this.parseWord(url, (Map) list.get(0)); + } else { + MyXWPFDocument doc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(doc, (Map) list.get(0)); + doc.createParagraph().setPageBreak(true); + + for (int i = 1; i < list.size(); ++i) { + MyXWPFDocument tempDoc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(tempDoc, (Map) list.get(i)); + tempDoc.createParagraph().setPageBreak(true); + doc.getDocument().addNewBody().set(tempDoc.getDocument().getBody()); + } + + return doc; + } + } else { + return null; + } + } + + public void parseWord(XWPFDocument document, Map map) throws Exception { + this.parseWordSetValue((MyXWPFDocument) document, map); + } + + /** + * 处理头和尾部脚本的内容替换 + * + * @param doc + * @param map + * @throws Exception + */ + private void parseHeaderAndFoot(MyXWPFDocument doc, Map map) throws Exception { + List headerList = doc.getHeaderList(); + Iterator var4 = headerList.iterator(); + + while (var4.hasNext()) { + XWPFHeader xwpfHeader = (XWPFHeader) var4.next(); + + for (int i = 0; i < xwpfHeader.getListParagraph().size(); ++i) { + this.parseThisParagraph((XWPFParagraph) xwpfHeader.getListParagraph().get(i), map); + } + } + + List footerList = doc.getFooterList(); + Iterator var9 = footerList.iterator(); + + while (var9.hasNext()) { + XWPFFooter xwpfFooter = (XWPFFooter) var9.next(); + + for (int i = 0; i < xwpfFooter.getListParagraph().size(); ++i) { + this.parseThisParagraph((XWPFParagraph) xwpfFooter.getListParagraph().get(i), map); + } + } + + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 87f4f15..44971a2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -71,7 +71,16 @@ UNABLE_TO_URGE(2431, "该部门不存在负责人,无法催办"), USER_ID_EMPTY(2432, "用户id不能为空"), CLIENT_ID_EMPTY(2433, "用户id不能为空"), - URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"); + URGER_IS_EMPTY(2434, "催办人不存在或被删除,无法催办"), + + /** + * 表单生成及打印 + */ + TEMPLATE_FILE_NULL(2700, "模板文件不能为空"), + FOREIGN_KEY_FIELD_NULL(2701, "模块外键字段为空"), + FOREIGN_KEY_VALUE_NULL(2702, "模块外键值为空"), + BIND_KEY_LIST_NULL(2703, "绑定管理的列表为空"), + APPROVAL_FIELD_ERROR(2704, "工作流字段设置错位"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index b2fc709..0417b1f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -7,6 +7,8 @@ */ public enum ExportEnum { RFID_EXPORT("rfidData", "rfidData", "标签"), + OUTSOURCE_NOTICE("outsourceNotice", "测试、校准或检定工作分包通知书", "测试、校准或检定工作分包通知书"), + FILE_EXPORT("meterFileData", "meterFileData", "计量文件信息"), TRAIN_PLAN_EXPORT("trainPlanData", "trainPlanData", "培训计划"), TRAIN_LOG_EXPORT("trainLogData", "trainLogData", "培训记录"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java new file mode 100644 index 0000000..305c409 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.enums; + +/** + * @Description: 打印&导出word/pdf配置模块枚举 + * @Author: wangpeng + * @Date: 2023/8/28 16:31 + */ +public interface PrintFileModuleNameEnum { + + String OUTSOURCE_NOTICE = "测试、校准或检定工作分包通知表"; + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java index 94a71ba..b4710a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/NotifyTypeEnum.java @@ -2,8 +2,8 @@ public interface NotifyTypeEnum { - String NOTIFY_TYPE_USER = "0"; + String NOTIFY_TYPE_USER = "1"; - String NOTIFY_TYPE_DEPT = "1"; + String NOTIFY_TYPE_DEPT = "2"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java index c78399c..27dc5f3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/plan/SampleStatusEnum.java @@ -1,12 +1,17 @@ package com.casic.missiles.enums.plan; +import liquibase.pro.packaged.S; + +import java.util.ArrayList; +import java.util.List; + /** * @Description: 样品状态类型枚举 * @Author: wangpeng * @Date: 2023/02/07 10:51 */ public enum SampleStatusEnum { - TO_RECEIVE("1", CheckCompletionEnum.UNCHECK), //待收入 + TO_RECEIVE("1", null), //待收入 TO_HANDOUT("2", CheckCompletionEnum.UNCHECK), //待分发 IN_MEASURE("3", CheckCompletionEnum.IN_CHECK), //检测中 MEASURE_COMPLETE("4", CheckCompletionEnum.IN_CHECK), //检测完 @@ -52,4 +57,24 @@ } return null; } + + public static List getSampleStatusByCompletion(String checkCompletion){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletion.equals(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } + + public static List getSampleStatusByCompletion(List checkCompletions){ + List res = new ArrayList<>(); + for (SampleStatusEnum statusEnum : SampleStatusEnum.values()) { + if(checkCompletions.contains(statusEnum.checkCompletion)){ + res.add(statusEnum.getSampleStatus()); + } + } + return res; + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java new file mode 100644 index 0000000..7513a64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/FilePrintEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.enums.system; + +/** + * @author cz + */ +public interface FilePrintEnum { + + /** + * 当前表关系字段 + */ + String CURRENT_ID_FIELD = "currentIdField"; + + String RELATE_TABLE_NAME = "relateTableName"; + + String RELATE_ID_FIELD = "relateIdField"; + + /** + * 查询审批流程的字段 + */ + String APPROVAL_FIELD = "approvalField"; + + /** + */ + String BIND_KEY_LIST = "bindKeyList"; + + + /** + * 用于图片字典和名字 + */ + String FILED_NAME = "filedName"; + /** + * 文档标注的值 + */ + String DOC_NAME = "docName"; + + + /** + * 工作流标志 + */ + String APPROVAL_FLAG = "approvalFlag"; + + /** + * 字典code + */ + String CODE = "code"; + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java new file mode 100644 index 0000000..e994831 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardCalendarMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface BoardCalendarMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..b2557dd --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/BoardMessageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 受检设备-首页看板-消息通知 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface BoardMessageMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..5558ef4 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/board/NoticeBoardMapper.java @@ -0,0 +1,34 @@ +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.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 org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NoticeBoardMapper { + + List statisticsInfoList(@Param("dataScope") DataScope dataScope, + @Param("equipmentType") String equipmentType, + @Param("deptIds") List deptIds, + @Param("deptName") String deptName, + @Param("checkedStatus") List checkedStatus); + + List toCheckEquipmentPage(@Param("page") Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentToCheckAggr toCheckStatistics(@Param("ew")QueryWrapper queryWrapper); + + List inCheckEquipmentPage(@Param("page")Page page, + @Param("ew") QueryWrapper queryWrapper); + + EquipmentInCheckAggr inCheckStatistics(@Param("ew")QueryWrapper queryWrapper, + @Param("unCheckStatus")List unCheckStatus, + @Param("inCheckStatus")List inCheckStatus, + @Param("checkedStatus")List checkedStatus); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java new file mode 100644 index 0000000..b705db7 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BizBusinessOutsourceNoticeMapper.java @@ -0,0 +1,24 @@ +package com.casic.missiles.mapper.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + *

+ * 计量检定业务-分包管理-分包通知书 Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface BizBusinessOutsourceNoticeMapper extends BaseMapper { + + Page selectBatchForApprovalList(Page page, @Param("request") OutsourceNoticeApprovalListRequest request, @Param("businessKeys") List businessKeys); + +} 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 c3a92fc..ca16614 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 @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,9 +22,12 @@ */ public interface EquipmentInfoMapper extends BaseMapper { - List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info where equipment_type = #{equipmentType}") + Long selectMaxNo(@Param("equipmentType") String equipmentType); - List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + List selectListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew") QueryWrapper queryWrapper); List bizCertificateListPage(@Param("page") Page page, @Param("dataScope") DataScope dataScope, @@ -30,4 +35,7 @@ List bizCertificateList(@Param("equipmentId") Long equipmentId); + + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java new file mode 100644 index 0000000..eba9009 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleFieldMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.model.file.ModuleFieldConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleFieldMapper extends BaseMapper { + + + //主表查询 + List> getBizMapList(@Param("tableName") String tableName, @Param("idValue") Long idValue); + + //=查询 + List> equalRelateBizList(@Param("tableName") String tableName, + @Param("fieldTableDtos") List fieldTableDtos); + + //in查询 + List> inRelateBizList(@Param("tableName") String tableName, + @Param("foreignKeyField") String foreignKeyField, + @Param("relateIdList") List relateIdList); + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java new file mode 100644 index 0000000..770e6c3 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/ModuleTemplatePrintMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.mapper.file; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; + +/** + * @author cz + * @date 2023-8-10 + */ +public interface ModuleTemplatePrintMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java new file mode 100644 index 0000000..575f57d --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/file/PrintFileRegisterMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.mapper.file; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PrintFileRegisterMapper { + + + @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE id =#{id}" + + " AND is_del=0 ") + String getSignFileSealById(@Param("id") Long id, @Param("tableName") String tableName); + + @Select(" SELECT minio_file_name " + + " FROM system_template " + + " WHERE id =#{id}") + String getTemplateFileById(@Param("id") Long id); + + + @Select(" SELECT minio_file_name " + + " FROM system_sign " + + " WHERE sign_user_id =#{signUserId} " + + " limit 1") + String getSignFileNameById(@Param("signUserId") Long signUserId); +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java index f8ae80b..440a2ab 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/plan/PlanEquipmentRelationMapper.java @@ -1,5 +1,7 @@ package com.casic.missiles.mapper.plan; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.plan.PlanEquipmentStatus; import com.casic.missiles.model.plan.PlanEquipmentRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,8 @@ void inspectionStatusUpdate(@Param("executeStatus") String executeStatus, @Param("inspectionId") Long inspectionId); + List planFinishStatistics(@Param("dataScope") DataScope dataScope, + @Param("deptIds") List deptIds, + @Param("checkedStatus")String checkedStatus); + } diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml new file mode 100644 index 0000000..5031a71 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardCalendarMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, mark_date, mark_content, create_user_id, create_dept_id, create_company_id, create_time, update_time + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml new file mode 100644 index 0000000..db62c06 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/BoardMessageMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml new file mode 100644 index 0000000..3ec8363 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/board/NoticeBoardMapper.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml new file mode 100644 index 0000000..eb18a2a --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessOutsourceNoticeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, notice_no, notice_name, lab_code, group_code, customerId, customer_name, outsourcer_name, device_name, create_user_id, + create_user_name, contacts, mobile, notice_date, notice_user_id, notice_user_name, approval_status, process_id, create_time, update_time + + + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml index 1c23860..2b43230 100644 --- a/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/plan/PlanEquipmentRelationMapper.xml @@ -67,6 +67,24 @@ LIMIT 1 + + update eqpt_plan_equipment_relation r1, diff --git a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml index e3dba22..67dbacc 100644 --- a/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/subcontract/SubcontractCertificateMapper.xml @@ -70,7 +70,7 @@ - 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 new file mode 100644 index 0000000..9b6df1a --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/board/NoticeBoardController.java @@ -0,0 +1,201 @@ +package com.casic.missiles.controller.board; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; +import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.annotation.DictCodeField; +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.model.board.BoardCalendar; +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.INoticeBoardService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/board") +@RequiredArgsConstructor +@Slf4j +public class NoticeBoardController { + + private final INoticeBoardService noticeBoardService; + private final IBoardCalendarService boardCalendarService; + + @ApiOperation("业务看板列表") + @GetMapping("bizList") + @ResponseBody + public ReturnDTO> bizList(String deptName) { + return ReturnUtil.success(noticeBoardService.planBizStatistics(deptName)); + } + + @ApiOperation("业务看板导出") + @GetMapping("bizExport") + @ResponseBody + public void bizExport(String deptName, HttpServletResponse response) throws IOException, IllegalAccessException { + List data = noticeBoardService.planBizStatistics(deptName); + + // 动态多级表头(标注当前时间) + Class dtoClass = EquipmentStatisticsDTO.class; + List excelField = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(ExcelProperty.class)) { + excelField.add(field); + } + } + excelField.sort(new Comparator() { + @Override + public int compare(Field o1, Field o2) { + ExcelProperty p1 = o1.getAnnotationsByType(ExcelProperty.class)[0]; + ExcelProperty p2 = o2.getAnnotationsByType(ExcelProperty.class)[0]; + return p1.index() - p2.index(); + } + }); + + List> head = ListUtils.newArrayList(); + String mainHead = "业务看板 " + DateUtil.formatDateTime(new Date()); + for (Field field : excelField) { + List head0 = ListUtils.newArrayList(); + head0.add(mainHead); + head0.add(field.getAnnotationsByType(ExcelProperty.class)[0].value()[0]); + head.add(head0); + } + + // 设置样式 + WriteCellStyle writeCellStyle = new WriteCellStyle(); + writeCellStyle.setBorderBottom(BorderStyle.THIN); + writeCellStyle.setBorderTop(BorderStyle.THIN); + writeCellStyle.setBorderLeft(BorderStyle.THIN); + writeCellStyle.setBorderRight(BorderStyle.THIN); + writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 设置响应流 + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("response", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)20)) + .registerWriteHandler(new HorizontalCellStyleStrategy(writeCellStyle,writeCellStyle)) + .head(head) + .sheet("数据") + .doWrite(data); + } catch (Exception e) { + log.error("文件导出失败", e); + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + e.getMessage()))); + } + } + + @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)); + } + + @ApiOperation("计量专业分类统计") + @GetMapping("/overview/equipmentCategory") + @ResponseBody + public ReturnDTO equipmentCategory(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.equipmentStatistics("category",deptIds)); + } + + @ApiOperation("计量计划完成率") + @GetMapping("/overview/planFinishRate") + @ResponseBody + public ReturnDTO planFinishRate(@RequestParam("deptIds")List deptIds){ + return ReturnUtil.success(noticeBoardService.planFinishRate(deptIds)); + } + + @ApiOperation("工作日历保存") + @PostMapping("/calendar/save") + @ResponseBody + public ReturnDTO calendarSave(@RequestBody BoardCalendar boardCalendar){ + boardCalendarService.editDate(boardCalendar); + 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"), + @ApiImplicitParam(name = "endDate", value = "结束日期", dataType = "String", paramType = "query",example = "2023-12-31"), + }) + @ApiOperation("工作日历查询") + @GetMapping("/calendar/list") + @ResponseBody + public ReturnDTO> calendarList(Long companyId,String startDate,String endDate){ + 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/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/inUsePage") + public ReturnDTO> inUsePage(){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(noticeBoardService.isUseEquipmentPage(page)); + } +} 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 3e5b766..cddfae3 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 @@ -18,9 +18,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.lang.reflect.ParameterizedType; import java.util.List; @Api(tags = "设备管理接口") @@ -78,6 +78,14 @@ return ReturnUtil.success(form); } + @ApiOperation("设备导入") + @PostMapping("/info/import") + @ResponseBody + public ReturnDTO infoImport(@RequestParam("file") MultipartFile file, @RequestParam("equipmentType")String equipmentType) throws IOException { + equipmentInfoService.infoImport(file,equipmentType); + return ReturnUtil.success(); + } + @ApiOperation("到期提醒分页列表") @PostMapping("/remind/listPage") @ResponseBody diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java new file mode 100644 index 0000000..af02d4b --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/resource/BizBusinessOutsourceNoticeController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.controller.resource; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Api(tags = "分包管理-测试、校准或检定工作分包通知书") +@RestController +@RequestMapping("/business/outsource/notice") +public class BizBusinessOutsourceNoticeController extends ExportController { + @Autowired + private IBizBusinessOutsourceNoticeService outsourceNoticeService; + + @ApiOperation("分页列表") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@RequestBody OutsourceNoticeApprovalListRequest request) throws Exception { + Page page = PageFactory.defaultPage(); + page = outsourceNoticeService.listPage(page, request); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("导出word/pdf/打印") + @PostMapping("/exportFile") + public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) { + outsourceNoticeService.exportFile(exportDTO, response); + } +} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java index 3dca093..e80f6ec 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/system/SystemRfidController.java @@ -4,8 +4,10 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.system.RfidDTO; import com.casic.missiles.dto.system.RfidListDTO; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.service.system.ISystemRfidService; @@ -63,8 +65,8 @@ @ApiOperation("删除标签(单个/批量,只能删除未绑定的)") @PostMapping("remove") @ResponseBody - public ReturnDTO remove(@RequestParam("rfids")List rfids){ - rfidService.remove(rfids); + public ReturnDTO remove(@RequestBody RfidDTO rfids){ + rfidService.remove(rfids.getRfids()); return ReturnUtil.success(); } diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e843de7..a2bf235 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -8,9 +8,9 @@ username: root password: Casic203 redis: - host: localhost - port: 6379 -# password: ew5T4K3#203lwh + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh database: 1 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml index ec19795..4d8acc2 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-test.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-test.yml @@ -4,31 +4,41 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3307/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root - password: Casic203 -#jms: -# pub-sub-domain: true -# session: -# store-type: redis -# redis: -# host: 111.198.10.15 -# port: 11412 -# password: ew5T4K3#203lwh -# serializer: org.springframework.data.redis.serializer.StringRedisSerializer -# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + password: root + redis: + host: 127.0.0.1 + port: 6379 +# password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + #jms: + # pub-sub-domain: true + session: + store-type: redis casic: + sysUrl: /sys #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken - #flowable数据源和多数据源配置 + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/websocket/**,/webjars/**,/swagger-ui.html,/swagger-resources db: init: enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ + meter: + standardEquipment: #标准装置 + remindDay: 30 #到期提醒,提前天数 + delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info level.com.casic: debug - level.org.springframework.web: info \ No newline at end of file + level.org.springframework.web: info +# level.org.flowable: debug #flowable日志,可查看SQL执行 \ No newline at end of file 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 4e0b078..1606f39 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -66,8 +66,8 @@ job: admin: # xxl-job后台管理界面的地址 - addresses: -# addresses: http://111.198.10.15:21605/xxl-job-admin +# addresses: + addresses: http://111.198.10.15:21605/xxl-job-admin executor: # 此执行器的名称 appname: casic-metering-job @@ -120,7 +120,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_remind_config + table-name: eqpt_board_message prefix: eqpt_ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 3addd20..86b278f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -20,6 +20,10 @@ String DICT_PREFIX = "eqpt"; //受检设备使用状态 String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "DeviceUseStatus"; + //受检设备重要等级 + String EQUIPMENT_LEVEL = DICT_PREFIX + "DeviceLevel"; + + String EQUIPMENT_CATEGORY = DICT_PREFIX + "DeviceType"; // 设备申请类型 String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; // 设备状态申请类型 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java new file mode 100644 index 0000000..abe298e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/ExportDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: for exprt + * @Author: wangpeng + * @Date: 2023/08/26 9:51 + */ +@Data +public class ExportDTO { + @NotNull(message = "主键ID不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long", required = true) + private Long id; + + @NotNull(message = "是否pdf不能为空") + @ApiModelProperty(value = "是否pdf(true:pdf,false:word)", dataType = "boolean", required = true) + private boolean isPdf; +} 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 new file mode 100644 index 0000000..991ec9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentBoardList.java @@ -0,0 +1,100 @@ +package com.casic.missiles.dto.board; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +import static com.casic.missiles.constants.MeterDictCode.PLAN_CHECK_COMPLETION; + +@Getter +@Setter +public class EquipmentBoardList { + + @ApiModelProperty("主键") + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty("设备编号") + private String equipmentNo; + + /** + * 设备名称 + */ + @ApiModelProperty("设备名称") + private String equipmentName; + + /** + * 所在单位id + */ + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + /** + * 使用部门id + */ + @ApiModelProperty("使用部门id") + private Long deptId; + + @ApiModelProperty("使用部门名称") + private String deptName; + + /** + * 负责人 + */ + @ApiModelProperty("负责人") + private String directorName; + + /** + * 证书有效期 + */ + @ApiModelProperty("证书有效期") + private Date certificateValid; + + /** + * 使用状态 + */ + @ApiModelProperty("使用状态") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) + private String usageStatus; + + @ApiModelProperty("使用状态名称") + private String usageStatusName; + + @ApiModelProperty("有效期状态名称") + private String validStatusName; + + @ApiModelProperty("送达时间") + private String realDeliverTime; + + /** + * 检定机构 + */ + @ApiModelProperty("检定(校准)单位") + private String checkOrganization; + + @ApiModelProperty(value = "样品状态",hidden = true) + private String sampleStatus; + + /** + * 检定完成度 + */ + @ApiModelProperty("检定完成度") + @DictCodeField(cacheName = PLAN_CHECK_COMPLETION) + private String checkCompletion; + + @ApiModelProperty("检定完成度名称") + private String checkCompletionName; + + + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java new file mode 100644 index 0000000..ccadf2e --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentCommonAggr.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.board; + +import cn.hutool.core.collection.CollUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentCommonAggr { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("数量") + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentCommonAggr(map.get("name").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java new file mode 100644 index 0000000..8e272d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentInCheckAggr.java @@ -0,0 +1,19 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentInCheckAggr { + + @ApiModelProperty("未检定") + private Integer unCheck; + + @ApiModelProperty("检定中") + private Integer inCheck; + + @ApiModelProperty("已捡完") + private Integer checked; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java new file mode 100644 index 0000000..672fb15 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsDTO.java @@ -0,0 +1,55 @@ +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 EquipmentStatisticsDTO { + + + @ApiModelProperty("部门id") + private Long deptId; + + @ExcelProperty(value = "部门",index = 0) + @ApiModelProperty("部门名称") + private String deptName; + + @ExcelProperty(value = "年度应检数量",index = 5) + @ApiModelProperty("年度应检数量") + private Long yearToCheck; + + @ExcelProperty(value = "年度已检数量",index = 6) + @ApiModelProperty("年度已检数量") + private Long yearChecked; + + @ExcelProperty(value = "本月到期设备",index = 2) + @ApiModelProperty("本月到期设备") + private Long monthToExpire; + + @ExcelProperty(value = "已超期设备",index = 3) + @ApiModelProperty("已超期设备") + private Long expired; + + @ExcelProperty(value = "设备总数",index = 1) + @ApiModelProperty("设备总数") + private Long total; + + @ExcelProperty(value = "在检设备",index = 4) + @ApiModelProperty("在检设备") + private Long inCheck; + + @ApiModelProperty("待检设备") + private Long toCheck; + + @ApiModelProperty("在用设备") + private Long inUse; + + @ExcelProperty(value = "计量计划完成率",index = 7) + @ApiModelProperty("计量计划完成率") + private String planFinishRate; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java new file mode 100644 index 0000000..3fd315f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentStatisticsList.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +public class EquipmentStatisticsList { + + private Long equipmentId; + + private Long deptId; + + private String deptName; + + private String equipmentType; + + private String usageStatus; + + private Date certificateValid; + + private String latestSampleStatus; + + private Integer yearChecked; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java new file mode 100644 index 0000000..5e750ac --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/EquipmentToCheckAggr.java @@ -0,0 +1,16 @@ +package com.casic.missiles.dto.board; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class EquipmentToCheckAggr { + + @ApiModelProperty("未超期") + private Integer valid; + + @ApiModelProperty("已超期") + private Integer invalid; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java new file mode 100644 index 0000000..b44267a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/board/PlanFinishDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.dto.board; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PlanFinishDTO { + + private Long deptId; + + private Float finished; + + private Float total; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java new file mode 100644 index 0000000..48c1b9f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceNoticeApprovalListRequest.java @@ -0,0 +1,45 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.dto.BaseApprovalListRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/28 9:53 + */ +@ApiModel +@Data +public class OutsourceNoticeApprovalListRequest extends BaseApprovalListRequest { + @ApiModelProperty(value = "通知书编号", dataType = "String") + private String noticeNo; + + @ApiModelProperty(value = "受检单位名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请人", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "申请时间开始", dataType = "String") + private String applicantTimeStart; + + @ApiModelProperty(value = "申请时间结束", dataType = "String") + private String applicantTimeEnd; + + /** + * 受检单位id + */ + @ApiModelProperty(hidden = true) + private Long customerId; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(hidden = true) + private Long noticeUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java new file mode 100644 index 0000000..a2395c0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/CropPicture.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class CropPicture { + + /** + * 目标图片路径 + */ + private String targetImgUrl; + + /** + * 行切割次数 + */ + private Integer cutRows; + /** + * 列切割次数 + */ + private Integer cutCols; + + /** + * 子文件存放路径 + */ + private String subfileUrl; + + /** + * 子文件的类型.jpg .png等类型 + */ + private String subfileType; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java new file mode 100644 index 0000000..9c1b7a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -0,0 +1,66 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Builder; +import lombok.Data; + +/** + * 电子签名 + */ +@Data +@Builder +public class ElectronicImage { + /** + * 电子签章资源路径 + */ + private String electronicSealImageUrl; + + /** + * 透明度 + */ + private Float diaphaneity; + + /** + * 图片叠加标志 + */ + private Boolean mereFlag; + + /** + * 电子印章水平位置 (当前文件推荐260f) + */ + private Float horizontal; + /** + * 电子印章垂直位置 (当前推荐455f) + */ + private Float vertical; + + /** + * 电子印章宽度(推荐120) + */ + private Float stampWidth; + + /** + * 电子印章高度(推荐120) + */ + private Float stampHeight; + + + /** + * 关键字 + */ + private String keyWord; + /** + * 关键字索引 + */ + private Integer keyWordIndex; + + // /** +// * 书签名,通过名称寻找书签文本所在位置 +// */ + private String bookmarkName; + // +// /** +// * 替换的文本新内容 +// */ + private String newBookmarkText; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java new file mode 100644 index 0000000..3660431 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/FilePrintRegister.java @@ -0,0 +1,42 @@ +package com.casic.missiles.dto.certificate; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author cz + * 打印图片注册表信息 + */ +@Data +public class FilePrintRegister { + /** + * 模板文件的目录 + */ + private String templatePath; + /** + * + */ + private String temDir; + /** + * 生成文件名 + */ + private String fileName; + /** + * 生成文件名 + */ + private Long fileNameId; + /** + * 模板参数 + */ + private Map params; + + + private List beDownloadedFileNames; + + /** + * electronicSealList 填充的电子图片信息 + */ + List electronicImageList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java new file mode 100644 index 0000000..8a32e1f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentImportDTO.java @@ -0,0 +1,184 @@ +package com.casic.missiles.dto.equipment; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.converter.DateExcelConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Getter +@Setter +public class EquipmentImportDTO { + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空") + @ExcelProperty("设备名称") + private String equipmentName; + + /** + * 型号规格 + */ + @NotBlank(message = "型号规格不能为空") + @ExcelProperty("型号规格") + private String model; + + /** + * 生产国家 + */ + @ExcelProperty("生产国家") + private String productCountry; + + /** + * 生产厂家 + */ + @ExcelProperty("生产厂家") + private String manufacturer; + /** + * 生产日期 + */ + @ExcelProperty("生产日期") + private Date productDate; + /** + * 出厂编号 + */ + @ExcelProperty("出厂编号") + private String manufactureNo; + + /** + * 使用状态(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS,needValid = true,message = "使用状态不合法") + @ExcelProperty(value = "使用状态") + private String usageStatus; + + + /** + * 等级(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_LEVEL,needValid = true,message = "重要等级不合法") + @ExcelProperty("重要等级") + private String level; + + /** + * 单价(万元) + */ + @ExcelProperty("设备单价") + private BigDecimal unitPrice; + + /** + * 购进日期 + */ + @ExcelProperty(value = "购进日期",converter = DateExcelConverter.class) + private Date purchaseDate; + + + /** + * 质量状况 + */ + @ExcelProperty("质量状况") + private String qualityCondition; + + /** + * 所在单位id + */ + private Long companyId; + + @ExcelProperty("所在单位") + private String companyName; + + /** + * 使用部门id + */ + private Long deptId; + + @ExcelProperty("使用部门") + private String deptName; + + /** + * 使用岗位 + */ + @ExcelProperty(value = "使用岗位") + private String usePosition; + + /** + * 负责人 + */ + @ExcelProperty("负责人") + private String directorName; + + /** + * 设备分类(字典code) + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_CATEGORY, needValid = true, message = "设备分类不合法") + @ExcelProperty("设备分类") + private String category; + + + /** + * 检定周期(月) + */ + @ExcelProperty(value = "检定周期") + private Integer checkCycle; + + + /** + * 检定机构 + */ + @ExcelProperty("检定(校准)机构") + private String checkOrganization; + + /** + * 检定日期 + */ + @ExcelProperty(value = "检定(校准)日期", converter = DateExcelConverter.class) + private Date checkDate; + + /** + * 证书有效期 + */ + @ExcelProperty(value = "证书有效期", converter = DateExcelConverter.class) + private Date certificateValid; + + /** + * 计量标识 + */ + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY, needValid = true, message = "计量标识不合法") + @ExcelProperty(value = "计量标识") + private String meterIdentify; + + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty("测量范围") + private String measureRange; + + /** + * 不确定度或允许误差极限或准确度等级 + */ + @ExcelProperty("技术指标") + private String uncertainty; + + /** + * 依据的技术文件 + */ + @ExcelProperty("依据的技术文件") + private String basedDocuments; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java index 8e5fc4e..b692d95 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/ExamineFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class ExamineFormApprovalListRequest extends BaseApprovalListRequest { +public class ExamineFormApprovalListRequest { @ApiModelProperty(value = "评审表编号", dataType = "String") private String formNo; @ApiModelProperty(value = "实验室代码", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java index 8705367..45c6aa9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/resource/SuggestFormApprovalListRequest.java @@ -12,7 +12,7 @@ */ @ApiModel @Data -public class SuggestFormApprovalListRequest extends BaseApprovalListRequest { +public class SuggestFormApprovalListRequest { @ApiModelProperty(value = "表单编号", dataType = "String") private String formNo; @ApiModelProperty(value = "意见反馈单位", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java index b5ca77a..26a8baa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/DownloadListResponse.java @@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; /** * @author cz @@ -77,10 +77,10 @@ @ApiModelProperty("创建时间") @ExcelProperty(value = "创建时间", order = 7) - private LocalDateTime createTime; + private Date createTime; @ApiModelProperty("更新时间") @ExcelProperty(value = "更新时间", order = 8) - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java new file mode 100644 index 0000000..68c9d85 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/FieldTableDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.system; + +import lombok.Builder; +import lombok.Data; + +/** + * @author cz + */ +@Data +@Builder +public class FieldTableDTO { + + /** + * 外键对应的字段名称 + */ + private String foreignKeyField; + + /** + * 外键对应的值 + */ + private String foreignKeyValue; + + /** + * sql 是否为in查询标志 + */ + private Boolean sqlIn; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java new file mode 100644 index 0000000..782d4ec --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/RfidDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.system; + +import com.alibaba.excel.annotation.ExcelIgnore; +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.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class RfidDTO { + + @ApiModelProperty("rfid列表") + private List rfids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java new file mode 100644 index 0000000..704f64a --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardCalendar.java @@ -0,0 +1,86 @@ +package com.casic.missiles.model.board; + +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 io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Getter +@Setter +@TableName("eqpt_board_calendar") +public class BoardCalendar implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Long id; + + /** + * 标记日期 + */ + @ApiModelProperty("标记日期") + @TableField("mark_date") + private String markDate; + + /** + * 标记内容 + */ + @ApiModelProperty("标记内容") + @TableField("mark_content") + private String markContent; + + /** + * 创建用户id + */ + @ApiModelProperty("创建用户id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 创建部门id + */ + @ApiModelProperty("创建部门id") + @TableField("create_dept_id") + private Long createDeptId; + + /** + * 创建单位id + */ + @ApiModelProperty("创建单位id") + @TableField("create_company_id") + private Long createCompanyId; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + private Date updateTime; + + +} 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 new file mode 100644 index 0000000..6d7f71c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/board/BoardMessage.java @@ -0,0 +1,101 @@ +package com.casic.missiles.model.board; + +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 lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-首页看板-消息通知 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Getter +@Setter +@TableName("eqpt_board_message") +public class BoardMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("id") + private Integer id; + + /** + * 消息模块(检定通知\通知公告\工作提醒) + */ + @TableField("message_module") + private String messageModule; + + /** + * 消息类型 + */ + @TableField("message_type") + private String messageType; + + /** + * 主题 + */ + @TableField("message_topic") + private String messageTopic; + + /** + * 来源模块 + */ + @TableField("source_module") + private String sourceModule; + + /** + * 读取状态(0未读; 1已读) + */ + @TableField("read_status") + private String readStatus; + + /** + * 通知用户id + */ + @TableField("notify_user_id") + private Integer notifyUserId; + + /** + * 通知部门id + */ + @TableField("notify_dept_id") + private Integer notifyDeptId; + + /** + * 业务主键id + */ + @TableField("biz_id") + private Integer bizId; + + /** + * 消息时间 + */ + @TableField("message_time") + private LocalDateTime messageTime; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java new file mode 100644 index 0000000..0e4605f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessOutsourceNotice.java @@ -0,0 +1,195 @@ +package com.casic.missiles.model.business; + +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.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.casic.missiles.dto.BaseRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +@TableName("biz_business_outsource_notice") +public class BizBusinessOutsourceNotice extends BaseRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") + private Long id; + + /** + * 通知书编号 + */ + @ExcelProperty(value = "通知书编号", order = 1) + @ApiModelProperty(value = "通知书编号", dataType = "String") + @TableField("notice_no") + private String noticeNo; + + /** + * 通知书名称 + */ + @ExcelProperty(value = "通知书名称", order = 2) + @ApiModelProperty(value = "通知书名称", dataType = "String") + @TableField("notice_name") + private String noticeName; + + @NotEmpty(message = "实验室代码不能为空") + @DictCodeField(message = "实验室代码描述不合法", cacheName = MeterDictCode.LAB_CODE) + @ApiModelProperty(value = "实验室代码(字典code)", dataType = "String") + @TableField("lab_code") + private String labCode; + + @ApiModelProperty(value = "实验室代码(字典value)", dataType = "String") + @TableField(exist = false) + private String labCodeName; + + @NotEmpty(message = "组别代码不能为空") + @DictCodeField(message = "组别代码描述不合法", cacheName = MeterDictCode.GROUP_CODE) + @ApiModelProperty(value = "组别代码(字典code)", dataType = "String") + @TableField("group_code") + private String groupCode; + + @ApiModelProperty(value = "组别代码(字典value)", dataType = "String") + @TableField(exist = false) + private String groupCodeName; + + @NotNull(message = "受检单位(委托方)id不能为空") + @ApiModelProperty(value = "受检单位(委托方)id", dataType = "Long") + @TableField("customer_id") + private Long customerId; + + @ExcelProperty(value = "受检单位名称", order = 3) + @ApiModelProperty(value = "受检单位名称(新建不传)", dataType = "String") + @TableField("customer_name") + private String customerName; + + /** + * 分包方名称 + */ + @ExcelProperty(value = "分包方名称", order = 4) + @ApiModelProperty(value = "分包方名称", dataType = "String") + @TableField("outsourcer_name") + private String outsourcerName; + + /** + * 分包设备名字 + */ + @ApiModelProperty(value = "分包设备名字", dataType = "String") + @TableField("device_name") + private String deviceName; + + /** + * 申请人id(后台自动填为创建人) + */ + @ApiModelProperty(value = "申请人id(后台自动填为创建人)", dataType = "String") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人名字(后台自动填为创建人) + */ + @ExcelProperty(value = "申请人", order = 5) + @ApiModelProperty(value = "申请人名字(后台自动填为创建人)", dataType = "String") + @TableField("create_user_name") + private String createUserName; + + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人", dataType = "String") + @TableField("contacts") + private String contacts; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", dataType = "String") + @TableField("mobile") + private String mobile; + + /** + * 通知书时间(通知书底部) + */ + @ApiModelProperty(value = "通知书时间(通知书底部)", dataType = "String") + @TableField("notice_date") + private String noticeDate; + + /** + * 通知委托方用户id + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户id(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_id") + private String noticeUserId; + + /** + * 通知委托方用户名字 + */ + @ApiModelProperty(value = "通知受检单位(委托方)用户名字(新建不传,更新传,多个逗号分割)", dataType = "String") + @TableField("notice_user_name") + private String noticeUserName; + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态描述不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @TableField("approval_status") + private String approvalStatus; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + @TableField("process_id") + private String processId; + + /** + * 创建时间(申请时间) + */ + @ExcelProperty(value = "申请时间", order = 6) + @ApiModelProperty(value = "申请时间", dataType = "String") + @TableField("create_time") + private String createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + @TableField(exist = false) + private String approvalStatusName; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + @TableField(exist = false) + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java index ac68685..30b5af3 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupInfo.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java index 380d037..36575f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentGroupRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 e08ea2a..10b5447 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 @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 82bd363..9b9c09d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.equipment; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -246,8 +246,13 @@ */ @ApiModelProperty("计量标识") @TableField("meter_identify") + @DictCodeField(cacheName = MeterDictCode.EQUIPMENT_METER_IDENTITY) private String meterIdentify; + @ApiModelProperty("计量标识名称") + @TableField(exist = false) + private String meterIdentifyName; + /** * 使用岗位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java index 83d5c5d..3a62fb2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentSpecialCertificate.java @@ -4,7 +4,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index b57c610..d9b8239 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -5,7 +5,6 @@ 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 io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java index 2416950..90293f7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTurnoverLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java index 63bef34..9fdc1f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFile.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java index fdd06e1..28b6b12 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/EqptFileLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java new file mode 100644 index 0000000..2a18d99 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleFieldConfig.java @@ -0,0 +1,72 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * @author cz + */ +@Data +@TableName("biz_module_field_config") +public class ModuleFieldConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty(value = "表名称,下拉列表", dataType = "String") + @NotNull(message = "表名称") + @TableField("table_name") + private String tableName; + + @ApiModelProperty("关联信息,这里存储当前表的外键映射信息,{\"relateIdField\":\" cutsomerId\",\"tableName\":\"{bizModuleFieldConfigId}\"}") + @TableField("relation_json") + private String relationJson; + + @ApiModelProperty("字典json") + @TableField("dict_json") + private String dictJson; + + @ApiModelProperty("图片json") + @TableField("image_json") + private String imageJson; + + /** + * 备注描述 + */ + @TableField("remark") + private String remark; + + /** + * doc是否用到 + */ + @TableField("doc_use") + private Integer docUse; + + + /** + * doc是否用到 + */ + @TableField("object_string") + private String objectString; + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java new file mode 100644 index 0000000..a1c1ff6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/file/ModuleTemplatePrintConfig.java @@ -0,0 +1,64 @@ +package com.casic.missiles.model.file; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author cz + */ +@Data +@TableName("biz_module_template_print_config") +public class ModuleTemplatePrintConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + @ApiModelProperty("模板类型") + @TableField("module_type") + private String moduleType; + + @ApiModelProperty("模板名称") + @TableField("module_name") + private String moduleName; + + @ApiModelProperty("模板类型") + @TableField("descn") + private String descn; + + @ApiModelProperty("模板名称") + @TableField("signs") + private String signs; + + @ApiModelProperty("模板名称") + @TableField("template_file_id") + private Long templateFileId; + + @ApiModelProperty("模板字段id") + @TableField("module_field_id") + private Long moduleFieldId; + + @ApiModelProperty("模板关联表字段ids") + @TableField("relate_module_field_ids") + private String relateModuleFieldIds; + + @TableField("update_user") + private Long updateUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java index a01b8d9..7510425 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionApproval.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java index b34502c..db25ba6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/InspectionEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java index 66809a7..22bf460 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanEquipmentRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java index c7d478c..db627d5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotify.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java index 7aa0b79..5be5409 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/plan/PlanNotifyRelation.java @@ -4,7 +4,6 @@ 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 com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java index b3b9bce..d732cdd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerResultReviewNotice.java @@ -38,7 +38,7 @@ */ @NotNull(message = "委托方id不能为空") @ApiModelProperty(value = "委托方id", dataType = "Long") - @TableField("customer_id") + @TableField("dept_id") private Long customerId; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java index 4f6d68c..569c66d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/resource/BizResourceCustomerSuggestForm.java @@ -83,6 +83,9 @@ @TableField("lab_code") private String labCode; + @TableField(exist = false) + private String labCodeName; + /** * 申诉人id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java index 7e4a4de..989211a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusLog.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java index ddbf003..ad5c82e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractCertificate.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.converter.DateExcelConverter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java index e6beacc..2d8cf22 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractReviewRelation.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java index c4dcc17..568003c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/Subcontractor.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import com.casic.missiles.annotation.DictCodeField; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java index 40a503b..31b3652 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorBusinessAbility.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java index 91f15d5..1356fa7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/subcontract/SubcontractorStaff.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; 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 0c4eb6b..60ed78c 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModelProperty; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java index 070d847..07fda7c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemFileConfig.java @@ -3,13 +3,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.BaseSystemRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; /** *

@@ -32,7 +33,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; @ApiModelProperty("下载编号") @TableField("download_no") @@ -87,12 +88,12 @@ * 创建时间 */ @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/SystemNotice.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemNotice.java index e94297d..2564be7 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 @@ -34,7 +34,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 通知公告编号 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java index 6792d0e..85517a2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemRfid.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.Date; import lombok.Getter; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java index eec2963..ac56fda 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemSign.java @@ -51,7 +51,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 签章/签名编号 @@ -91,16 +91,25 @@ /** * 签名用户id(一个用户一个签名,签名不使用关联表,签章暂时使用和使用人的关联表) */ + @ApiModelProperty(value = "签名用户id", dataType = "String") @TableField("sign_user_id") private Long signUserId; - /** - * 签章或签名-字典code - */ - @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") - @NotBlank(message = "类型不能为空") - @TableField("sign_type") - private String signType; + @ApiModelProperty(value = "签名用户部门id") + @TableField(exist = false) + private Long signDeptId; + + @ApiModelProperty(value = "签名用户部门名称") + @TableField(exist = false) + private String signDeptName; + +// /** +// * 签章或签名-字典code +// */ +// @ApiModelProperty(value = "签章/签名-字典code", dataType = "String") +// @NotBlank(message = "类型不能为空") +// @TableField("sign_type") +// private String signType; /** * minio存储文件名 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java index 503a457..405712e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/system/SystemTemplate.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "系统类别(1业务系统2受检系统3环境系统)", dataType = "Integer") @NotNull(message = "系统类别不能为空") @TableField("system_type") - private Integer systemType; + private Integer systemType = 2; /** * 模板编号 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 62c6519..ae3c2c6 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -43,6 +43,21 @@ com.gg.reader greader-api + + com.deepoove + poi-tl + 1.10.0 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi + 4.1.2 + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java index 7eab839..4476c7a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/ICommonApprovalService.java @@ -27,7 +27,6 @@ void finishApproval(Long approvalId); - Page listPage(Page page, Q queryForm); Page toApprovalListPage(Page page, Q queryForm); 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 new file mode 100644 index 0000000..a433646 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardCalendarService.java @@ -0,0 +1,22 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardCalendar; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +public interface IBoardCalendarService extends IService { + + void editDate(BoardCalendar boardCalendar); + + List listByCompany(Long companyId,String startDate,String endDate); + +} 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 new file mode 100644 index 0000000..b5063a3 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/IBoardMessageService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 受检设备-首页看板-消息通知 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +public interface IBoardMessageService extends IService { + +} 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 new file mode 100644 index 0000000..cb84bee --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/board/INoticeBoardService.java @@ -0,0 +1,29 @@ +package com.casic.missiles.service.board; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.board.*; +import com.casic.missiles.model.equipment.EquipmentInfo; + +import java.util.List; + +public interface INoticeBoardService { + + List planBizStatistics(String deptName); + + EquipmentStatisticsDTO equipmentSummary(); + + String planFinishRate(List deptIds); + + List equipmentStatistics(String columnName, List deptIds); + + Page isUseEquipmentPage(Page page); + + Page toCheckEquipmentPage(Page page); + + EquipmentToCheckAggr toCheckStatistics(); + + Page inCheckEquipmentPage(Page page); + + EquipmentInCheckAggr inCheckStatistics(); + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java new file mode 100644 index 0000000..c4a1efa --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBizBusinessOutsourceNoticeService.java @@ -0,0 +1,25 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; + + +import javax.servlet.http.HttpServletResponse; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +public interface IBizBusinessOutsourceNoticeService extends IService { + + Page listPage(Page page, OutsourceNoticeApprovalListRequest queryRequest) throws Exception; + + void exportFile(ExportDTO exportDTO, HttpServletResponse response); +} 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 eee21dc..8279b79 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 @@ -1,10 +1,16 @@ package com.casic.missiles.service.equipment; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -26,6 +32,8 @@ EquipmentInfoForm detail(Long equipmentId); + void infoImport(MultipartFile file,String equipmentType) throws IOException; + List allCertificate(Long equipmentId,String equipmentType); void updateEquipmentStatus(Long equipmentId, String usageStatus); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java index 5fe001d..dafca0a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/CommonApprovalServiceImpl.java @@ -153,6 +153,8 @@ QueryWrapper queryWrapper = commonQuery(queryForm); if(StrUtil.isNotEmpty(queryForm.getApprovalStatus())){ queryWrapper.eq("approval_status",queryForm.getApprovalStatus()); + }else { + queryWrapper.ne("approval_status",ApprovalStatusEnum.DRAFT); } AuthUser user = permissionContext.getAuthService().getLoginUser(); queryWrapper.eq("create_user_id",user.getId()); 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 new file mode 100644 index 0000000..fa8bb1a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardCalendarServiceImpl.java @@ -0,0 +1,50 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.board.BoardCalendar; +import com.casic.missiles.mapper.board.BoardCalendarMapper; +import com.casic.missiles.service.board.IBoardCalendarService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-05 + */ +@Service +public class BoardCalendarServiceImpl extends ServiceImpl implements IBoardCalendarService { + + @Override + public void editDate(BoardCalendar boardCalendar) { + this.remove(boardCalendar.getCreateCompanyId(),boardCalendar.getMarkDate()); + this.saveOrUpdate(boardCalendar); + } + + private void remove(Long companyId,String markDate){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + queryWrapper.eq("mark_date",markDate); + this.remove(queryWrapper); + } + + @Override + public List listByCompany(Long companyId, String startDate, String endDate) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("create_company_id",companyId); + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("mark_date",startDate); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("mark_date",endDate); + } + queryWrapper.orderByAsc("mark_date"); + return this.list(queryWrapper); + } +} 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 new file mode 100644 index 0000000..d4a2481 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/BoardMessageServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.impl.board; + +import com.casic.missiles.model.board.BoardMessage; +import com.casic.missiles.mapper.board.BoardMessageMapper; +import com.casic.missiles.service.board.IBoardMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 受检设备-首页看板-消息通知 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-09-08 + */ +@Service +public class BoardMessageServiceImpl extends ServiceImpl implements IBoardMessageService { + +} 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 new file mode 100644 index 0000000..9f2d240 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/board/NoticeBoardServiceImpl.java @@ -0,0 +1,274 @@ +package com.casic.missiles.service.impl.board; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +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.core.application.context.AbstractPermissionContext; +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.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.mapper.board.NoticeBoardMapper; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.service.board.INoticeBoardService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.plan.IPlanEquipmentRelationService; +import com.casic.missiles.service.system.IRemindConfigService; +import com.casic.missiles.utils.DictCodeUtils; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + +@Service +@RequiredArgsConstructor +public class NoticeBoardServiceImpl implements INoticeBoardService { + + private final IEquipmentInfoService equipmentInfoService; + private final IPlanEquipmentRelationService planRelationService; + private final AbstractPermissionContext permissionContext; + private final IRemindConfigService remindConfigService; + + private final NoticeBoardMapper noticeBoardMapper; + + private final List InCheckSampleStatus = Arrays.asList(CheckCompletionEnum.IN_CHECK,CheckCompletionEnum.UNCHECK,CheckCompletionEnum.CHECKED); + + @Override + public List planBizStatistics(String deptName) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List statisticsLists = this.noticeBoardMapper.statisticsInfoList(dataScope,EQUIPMENT_TYPE_NORMAL,null, deptName, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + Map> deptMaps = statisticsLists.stream().collect(Collectors.groupingBy(EquipmentStatisticsList::getDeptId)); + + List planFinishDTOList = planRelationService.planFinishStatistics(null); + + List res = new ArrayList<>(); + for (Long deptId : deptMaps.keySet()) { + List subList = deptMaps.get(deptId); + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + statisticsDTO.setDeptId(deptId); + statisticsDTO.setDeptName(subList.get(0).getDeptName()); + + + statisticsDTO.setTotal((long) subList.size()); + statisticsDTO.setMonthToExpire(subList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(subList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setInCheck(subList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(InCheckSampleStatus).contains(i.getLatestSampleStatus())).count()); + statisticsDTO.setYearToCheck(subList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(subList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + Optional planFinishOpt = planFinishDTOList.stream().filter(i->deptId.equals(i.getDeptId())).findFirst(); + if(planFinishOpt.isPresent()){ + PlanFinishDTO planFinishDTO = planFinishOpt.get(); + if(planFinishDTO.getTotal() <= 0){ + statisticsDTO.setPlanFinishRate("0%"); + }else { + double rate = planFinishDTO.getFinished() / planFinishDTO.getTotal(); + statisticsDTO.setPlanFinishRate(new DecimalFormat("#.##%").format(rate)); + } + }else { + statisticsDTO.setPlanFinishRate("0%"); + } + + res.add(statisticsDTO); + } + + return res; + } + + @Override + public EquipmentStatisticsDTO equipmentSummary() { + List deptIds = null; + if(!ShiroKit.isAdmin()){ + deptIds = getCurrentDeptIds(); + } + + Integer remindTime = remindConfigService.getRemindTimeByDeptId(permissionContext.getAuthService().getLoginUser().getDeptId()); + Calendar remiandCalendar = Calendar.getInstance(); + remiandCalendar.add(Calendar.DATE, remindTime); + + List list = this.noticeBoardMapper.statisticsInfoList(null,null,deptIds, null, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + List normalList = list.stream().filter(i->EQUIPMENT_TYPE_NORMAL.equals(i.getEquipmentType())).collect(Collectors.toList()); + + + EquipmentStatisticsDTO statisticsDTO = new EquipmentStatisticsDTO(); + + statisticsDTO.setTotal((long) list.size()); + statisticsDTO.setMonthToExpire(normalList.stream().filter(i->i.getCertificateValid().after(new Date()) && DateUtil.month(new Date()) == DateUtil.month(i.getCertificateValid())).count()); + statisticsDTO.setExpired(normalList.stream().filter(i->i.getCertificateValid().before(new Date())).count()); + statisticsDTO.setToCheck(normalList.stream().filter(i-> i.getCertificateValid().before(remiandCalendar.getTime())).count()); + + statisticsDTO.setInCheck(normalList.stream().filter(i-> StrUtil.isNotEmpty(i.getLatestSampleStatus()) && SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK).contains(i.getLatestSampleStatus())).count()); + + statisticsDTO.setInUse(list.stream().filter(i-> EquipmentStatusTypeEnum.UNSEAL.equals(i.getUsageStatus())).count()); + statisticsDTO.setYearToCheck(normalList.stream().filter(i-> DateUtil.year(new Date()) == DateUtil.year(i.getCertificateValid())).count()); + statisticsDTO.setYearChecked(normalList.stream().mapToLong(i->Long.valueOf(i.getYearChecked())).sum()); + + return statisticsDTO; + } + + @NotNull + private List getCurrentDeptIds() { + List deptIds; + AuthUser user = permissionContext.getAuthService().getLoginUser(); + deptIds = permissionContext.getDeptService().getIdsRecursionByPid(user.getDeptId(),null); + deptIds.add(user.getDeptId()); + return deptIds; + } + + private List getScopeOrCurrentDeptIds(){ + if(ShiroKit.isAdmin()){ + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.equals(dataScope.getScopeEnums())) { + return dataScope.getDeptIds(); + } + }else { + return getCurrentDeptIds(); + } + return null; + } + + @Override + public String planFinishRate(List deptIds) { + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + List planFinishDTOList = planRelationService.planFinishStatistics(deptIds); + double total = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getTotal).sum(); + double finish = planFinishDTOList.stream().mapToDouble(PlanFinishDTO::getFinished).sum(); + double rate = finish / total; + return new DecimalFormat("#.##%").format(rate); + } + + + public List equipmentStatistics(String columnName,List deptIds){ + if(CollUtil.isEmpty(deptIds)){ + deptIds = getScopeOrCurrentDeptIds(); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_del","0"); + if(CollUtil.isNotEmpty(deptIds)){ + queryWrapper.in("dept_id",deptIds); + } + + queryWrapper.groupBy(columnName); + String selectSql = String.format("%s as 'name',count(*) as 'count'",columnName); + queryWrapper.select(selectSql); + queryWrapper.orderByDesc("count"); + queryWrapper.last("limit 10"); + + List> resMap = equipmentInfoService.listMaps(queryWrapper); + return EquipmentCommonAggr.mapToObjects(resMap); + } + + @Override + public Page isUseEquipmentPage(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); + 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; + } + + @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(); + + List list = this.noticeBoardMapper.inCheckEquipmentPage(page,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()); + try { + DictCodeUtils.convertDictCodeToName(i); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + page.setRecords(list); + return page; + } + + @Override + public EquipmentInCheckAggr inCheckStatistics(){ + QueryWrapper queryWrapper = toCheckQueryWrapper(); + return this.noticeBoardMapper.inCheckStatistics(queryWrapper, + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.UNCHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.IN_CHECK), + SampleStatusEnum.getSampleStatusByCompletion(CheckCompletionEnum.CHECKED)); + } + + @NotNull + private QueryWrapper inCheckQueryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + List 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"); + queryWrapper.in("r.sample_status",InCheckSampleStatus); + return queryWrapper; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java new file mode 100644 index 0000000..d9774c2 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/business/BizBusinessOutsourceNoticeServiceImpl.java @@ -0,0 +1,63 @@ +package com.casic.missiles.service.impl.business; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ExportDTO; +import com.casic.missiles.dto.business.outsource.OutsourceNoticeApprovalListRequest; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessOutsourceNoticeMapper; +import com.casic.missiles.model.business.BizBusinessOutsourceNotice; +import com.casic.missiles.service.business.IBizBusinessOutsourceNoticeService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +import static com.casic.missiles.enums.PrintFileModuleNameEnum.OUTSOURCE_NOTICE; + +/** + *

+ * 计量检定业务-分包管理-分包通知书 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-08-28 + */ +@Service +public class BizBusinessOutsourceNoticeServiceImpl extends ServiceImpl implements IBizBusinessOutsourceNoticeService { + @Autowired + private PrintFileRegister printFileRegister; + @Autowired + private AbstractPermissionContext permissionContext; + + @Override + public Page listPage(Page page, OutsourceNoticeApprovalListRequest request) throws Exception { + request.setCreateUserId(null); + request.setApprovalStatus(ApprovalStatusEnum.PASSED); + request.setNoticeUserId(permissionContext.getAuthService().getLoginUser().getId()); + return this.baseMapper.selectBatchForApprovalList(page,request,null); + } + + @Override + public void exportFile(ExportDTO exportDTO, HttpServletResponse response) { + BizBusinessOutsourceNotice outsourceNotice = this.baseMapper.selectById(exportDTO.getId()); + Map map = BeanUtil.beanToMap(outsourceNotice); + Date date = DateUtil.parse(outsourceNotice.getCreateTime()); + map.put("year", DateUtil.year(date)); + map.put("month", DateUtil.month(date)); + map.put("day", DateUtil.dayOfMonth(date)); + printFileRegister.registerPrintFile(OUTSOURCE_NOTICE, "1", null, map, exportDTO.isPdf(), response); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 1ca0447..54eb157 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -96,6 +96,8 @@ .setIgnoreNullValue(true) .setIgnoreError(true); BeanUtil.copyProperties(equipmentInfo, approvalForm, options); + approvalForm.setAttachments(attachmentService.selectByEquipment(approvalForm.getEquipmentId())); + approvalForm.setTechnicalTargetList(technicalTargetService.selectByEquipment(approvalForm.getEquipmentId())); } // 0. 生成设备id @@ -226,8 +228,8 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentInfoApproval approval = this.getById(approvalId); + warpper(approval); EquipmentApprovalForm info = new EquipmentApprovalForm(); - warpper(info); BeanUtil.copyProperties(approval,info); if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); 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 ae66c93..44326e8 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 @@ -2,36 +2,55 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.model.auth.AuthUser; +import com.casic.missiles.dto.board.EquipmentStatisticsDTO; +import com.casic.missiles.dto.board.EquipmentStatisticsList; import com.casic.missiles.dto.equipment.*; import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.equipment.EquipmentCertificateTypeEnum; import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; import com.casic.missiles.enums.equipment.EquipmentTypeEnum; import com.casic.missiles.enums.equipment.StatusApprovalTypeEnum; +import com.casic.missiles.enums.plan.CheckCompletionEnum; +import com.casic.missiles.enums.plan.SampleStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.service.status.IEquipmentStatusLogService; import com.casic.missiles.service.subcontract.ISubcontractCertificateService; import com.casic.missiles.service.system.IRemindConfigService; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -51,6 +70,7 @@ private final IRemindConfigService remindConfigService; private final IEquipmentSpecialCertificateService specialCertificateService; private final IEquipmentStatusLogService statusLogService; + private final IEquipmentTurnoverLogService turnoverLogService; private ISubcontractCertificateService subcontractCertificateService; @Autowired @@ -68,7 +88,7 @@ return page; } - private void warpEquipmentInfo(EquipmentInfo i) { + public void warpEquipmentInfo(EquipmentInfo i) { try { i.setCompanyName(permissionContext.getDeptService().getDeptName(i.getCompanyId())); i.setDeptName(permissionContext.getDeptService().getDeptName(i.getDeptId())); @@ -109,9 +129,9 @@ public QueryWrapper commonQuery(EquipmentQueryForm queryForm) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if(CollUtil.isNotEmpty(queryForm.getIds())){ - queryWrapper.in("ids",queryForm.getIds()); - }else { + 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.like(StrUtil.isNotEmpty(queryForm.getEquipmentName()), "equipment_name", queryForm.getEquipmentName()); @@ -170,6 +190,116 @@ } @Override + public void infoImport(MultipartFile file, String equipmentType) throws IOException { + InputStream inputStream = file.getInputStream(); + List list = EasyExcel.read(inputStream) //调用read方法 + //注册自定义监听器,字段校验可以在监听器内实现 + .registerReadListener(new CommonExcelListener<>()) + .head(EquipmentImportDTO.class) //对应导入的实体类 + .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据 + .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行 + .doReadSync(); //开始读Excel,返回一个List集合,继续后续入库操作 + validImport(list); + saveImport(list, equipmentType); + } + + private void validImport(List list) { + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List deptList = permissionContext.getDeptService().list(null); + Dept top = deptList.stream().filter(i -> ObjectUtil.isEmpty(i.getPid()) || i.getPid() < 0).findFirst().orElse(null); + + Long companyId = null; + List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); + if (CollUtil.isNotEmpty(parentDeptIds)) { + List parentdDeptList = new ArrayList<>(); + parentDeptIds.forEach(d -> parentdDeptList.add(permissionContext.getDeptService().getById(d))); + Dept company = parentdDeptList.stream().filter(d -> top.getId().equals(d.getPid())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(company)) { + companyId = company.getId(); + } else { + companyId = user.getDeptId(); + } + } + String validMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + if (StrUtil.isBlank(importDTO.getEquipmentName())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "设备名称不能为空")); + } + if (StrUtil.isBlank(importDTO.getModel())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "型号规格不能为空")); + } + + if (StrUtil.isEmpty(importDTO.getCompanyName())) { + importDTO.setCompanyId(companyId); + } + if (StrUtil.isEmpty(importDTO.getDeptName())) { + importDTO.setDeptId(user.getDeptId()); + } + for (Dept dept : deptList) { + if (ObjectUtil.isEmpty(importDTO.getCompanyId()) && dept.getFullName().equals(importDTO.getCompanyName().trim()) && dept.getPid().equals(top.getId())) { + importDTO.setCompanyId(dept.getId()); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId()) && dept.getFullName().equals(importDTO.getDeptName().trim())) { + importDTO.setDeptId(dept.getId()); + } + } + if (ObjectUtil.isEmpty(importDTO.getCompanyId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "所在单位不合法")); + } + if (ObjectUtil.isEmpty(importDTO.getDeptId())) { + throw new BusinessException(1500, String.format(validMsg, i + 1, "使用部门不合法")); + } + } + } + + @Transactional + public void saveImport(List list, String equipmentType) { + Long maxNo = this.baseMapper.selectMaxNo(equipmentType); + String prefix = EQUIPMENT_TYPE_NORMAL.equals(equipmentType) ? PrefixCodeEnum.EQUIPMENT_PREFIX : PrefixCodeEnum.EQUIPMENT_SPECIAL_PREFIX; + + AuthUser user = permissionContext.getAuthService().getLoginUser(); + List equipmentInfos = new ArrayList<>(); + List technicalTargets = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + EquipmentImportDTO importDTO = list.get(i); + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(importDTO, equipmentInfo); + equipmentInfo.setId(IdWorker.getId()); + equipmentInfo.setEquipmentNo(NumberGeneratorUtil.getContactNo(prefix, maxNo + i)); + equipmentInfo.setEquipmentType(equipmentType); + equipmentInfo.setCreateUserId(user.getId()); + equipmentInfo.setCreateUserName(user.getName()); + equipmentInfo.setCreateTime(new Date()); + equipmentInfo.setUpdateTime(new Date()); + equipmentInfo.setIsDel(0); + + equipmentInfos.add(equipmentInfo); + + if (!StrUtil.isAllBlank(importDTO.getUncertainty(), importDTO.getBasedDocuments(), importDTO.getMeasureRange())) { + EquipmentTechnicalTarget technicalTarget = new EquipmentTechnicalTarget(); + technicalTarget.setEquipmentId(equipmentInfo.getId()); + technicalTarget.setUncertainty(importDTO.getUncertainty()); + technicalTarget.setBasedDocuments(importDTO.getBasedDocuments()); + technicalTarget.setMeasureRange(importDTO.getMeasureRange()); + technicalTarget.setCreateTime(new Date()); + technicalTarget.setUpdateTime(new Date()); + technicalTargets.add(technicalTarget); + } + + } + if (CollUtil.isNotEmpty(equipmentInfos)) { + this.saveBatch(equipmentInfos); + } + if (CollUtil.isNotEmpty(technicalTargets)) { + technicalTargetService.saveBatch(technicalTargets); + } + for (EquipmentInfo equipmentInfo : equipmentInfos) { + turnoverLogService.saveLog(equipmentInfo, null, user.getId()); + } + } + + @Override public void updateEquipmentStatus(Long equipmentId, String usageStatus) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); @@ -195,7 +325,7 @@ && !EquipmentStatusTypeEnum.SCRAP.equals(equipmentInfo.getUsageStatus()) && certificateValid.after(new Date())) { this.updateEquipmentStatus(equipmentId, EquipmentStatusTypeEnum.UNSEAL); - statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL,"设备证书更新"); + statusLogService.saveLog(equipmentId, StatusApprovalTypeEnum.UNSEAL, "设备证书更新"); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java index 495239b..9ca18d3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/plan/PlanEquipmentRelationServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractAuthService; import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.dto.plan.PlanEquipmentStatus; +import com.casic.missiles.enums.plan.CheckCompletionEnum; import com.casic.missiles.enums.plan.ExecuteStatusEnum; import com.casic.missiles.enums.plan.SampleStatusEnum; import com.casic.missiles.model.equipment.EquipmentAttachment; @@ -44,6 +49,8 @@ private final IEquipmentInfoService equipmentInfoService; private final AbstractDeptService deptService; + private final AbstractPermissionContext permissionContext; + @Override public void saveByPlan(Long planId, List equipmentIds) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -59,7 +66,12 @@ relation.setExecuteStatus(ExecuteStatusEnum.UN_EXECUTE); }else { relation.setExecuteStatus(ExecuteStatusEnum.EXECUTED); - relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + if(ObjectUtil.isNotEmpty(equipmentStatus.getSampleStatus()) && ObjectUtil.isNotEmpty(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()))){ + relation.setCheckCompletion(SampleStatusEnum.getByStatus(equipmentStatus.getSampleStatus()).getCheckCompletion()); + } + if(ObjectUtil.isEmpty(relation.getCheckCompletion())){ + relation.setCheckCompletion(CheckCompletionEnum.UNCHECK); + } if(ObjectUtil.isNotEmpty(equipmentStatus.getMeasureCompleteTime())){ relation.setCheckFinishTime(equipmentStatus.getMeasureCompleteTime()); } @@ -139,4 +151,10 @@ public void inspectionStatusUpdate(String executeStatus, Long inspectionId) { this.baseMapper.inspectionStatusUpdate(executeStatus, inspectionId); } + + @Override + public List planFinishStatistics(List deptIds) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.planFinishStatistics(dataScope,deptIds, CheckCompletionEnum.CHECKED); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java index 2656541..99cbf42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerExamineFormServiceImpl.java @@ -64,7 +64,7 @@ //登录用户 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("approval_status",ApprovalStatusEnum.PASSED); - queryWrapper.eq("signUserId",permissionContext.getAuthService().getLoginUser().getId()); + queryWrapper.eq("sign_user_id",permissionContext.getAuthService().getLoginUser().getId()); queryWrapper.like(StrUtil.isNotEmpty(request.getFormNo()),"form_no",request.getFormNo()); queryWrapper.like(StrUtil.isNotEmpty(request.getLabCode()),"lab_code",request.getLabCode()); queryWrapper.like(StrUtil.isNotEmpty(request.getGroupCode()),"group_code",request.getGroupCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java index fdc12ba..83017f8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerResultReviewNoticeServiceImpl.java @@ -51,7 +51,7 @@ "{0} >= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateTimeEnd().split(" ")[0]); AuthUser authUser = permissionContext.getAuthService().getLoginUser(); - wrapper.eq("noticeUserId",authUser.getId()); + wrapper.eq("notice_user_id",authUser.getId()); wrapper.orderByDesc("create_time"); Page meterFilePage = this.baseMapper.selectPage(page, wrapper); return meterFilePage; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java index 74e8d0a..476f7f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/resource/BizResourceCustomerSuggestFormServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.resource; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -72,7 +73,10 @@ }); List parentDeptIds = permissionContext.getDeptService().getParentListById(user.getDeptId()); QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("customer_id", parentDeptIds); + if(CollUtil.isNotEmpty(parentDeptIds)){ + wrapper.in("customer_id", parentDeptIds); + } + wrapper.like(StrUtil.isNotEmpty(request.getFormNo()), "form_no", request.getFormNo()); wrapper.like(StrUtil.isNotEmpty(request.getCreateUserName()), "create_user_name", request.getCreateUserName()); wrapper.apply(StringUtils.isNotBlank(request.getCreateTimeStart()), diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java index 6878d5e..ef56a5f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.dto.status.EquipmentStatusQueryForm; import com.casic.missiles.enums.ApprovalStatusEnum; @@ -140,6 +141,8 @@ if (StrUtil.isNotEmpty(queryForm.getApprovalStatus())) { queryWrapper.eq("approval.approval_status", queryForm.getApprovalStatus()); } + AuthUser user = permissionContext.getAuthService().getLoginUser(); + queryWrapper.eq("approval.create_user_id",user.getId()); List list = this.baseMapper.listPage(page, queryWrapper); list.forEach(this::warpApprovalInfo); page.setRecords(list); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java index 79b8345..011b6b5 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/subcontract/SubcontractorServiceImpl.java @@ -109,6 +109,6 @@ if(StrUtil.isNotEmpty(queryForm.getCreateTimeEnd())){ queryWrapper.le("create_time",queryForm.getCreateTimeEnd()); } - return super.commonQuery(queryForm); + return queryWrapper; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java index ee16a21..3e68301 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemRfidServiceImpl.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -107,20 +108,31 @@ if(CollectionUtils.isEmpty(list)){ throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA); } - if(list.stream().anyMatch(i->StrUtil.isEmpty(i.getRfid()))){ - throw new BusinessException(BusinessExceptionEnum.IMPORT_NO_DATA_ITEM); - } + List equipmentInfoList = equipmentInfoService.list(); + List rfidList = this.list(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("equipment_no"); - List> equipmentNoMaps = equipmentInfoService.listMaps(queryWrapper); - List equipmentNos = equipmentNoMaps.stream().map(i->i.get("equipment_no").toString()).distinct().collect(Collectors.toList()); + List rfids = rfidList.stream().map(SystemRfid::getRfid).collect(Collectors.toList()); + rfids.addAll(equipmentInfoList.stream().filter(i->StrUtil.isNotEmpty(i.getRfid())).map(EquipmentInfo::getRfid).collect(Collectors.toList())); - list.forEach(i->{ - if(StrUtil.isNotEmpty(i.getEquipmentNo()) && equipmentNos.contains(i.getEquipmentNo())){ - throw new BusinessException(500,"不存在的设备编号"); + String errorMsg = "第%d行数据校验失败:%s"; + for (int i = 0; i < list.size(); i++) { + RfidImportDTO importDTO = list.get(i); + if(StrUtil.isEmpty(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号为空")); } - }); + if(rfids.contains(importDTO.getRfid())){ + throw new BusinessException(5001,String.format(errorMsg,i+1,"RFID标签编号已存在")); + } + + if(StrUtil.isNotEmpty(importDTO.getEquipmentNo())) { + Optional equipmentInfoOpt = equipmentInfoList.stream().filter(e -> e.getEquipmentNo().equals(importDTO.getEquipmentNo())).findFirst(); + if (!equipmentInfoOpt.isPresent()) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"不存在的设备编号")); + } else if (StrUtil.isNotEmpty(equipmentInfoOpt.get().getRfid())) { + throw new BusinessException(5001, String.format(errorMsg,i+1,"设备已绑定RFID标签")); + } + } + } } @Transactional @@ -165,9 +177,9 @@ } if(StrUtil.isNotEmpty(useStatus)){ if("0".equals(useStatus)){ - queryWrapper.isNull("e.equipment_id"); + queryWrapper.isNull("e.id"); }else { - queryWrapper.isNotNull("e.equipment_id"); + queryWrapper.isNotNull("e.id"); } } return queryWrapper; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java index 7f495f6..288dcff 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/system/SystemSignServiceImpl.java @@ -18,7 +18,9 @@ import com.casic.missiles.mapper.system.SystemSignUserRelationMapper; import com.casic.missiles.model.system.SystemSign; import com.casic.missiles.model.system.SystemSignUserRelation; +import com.casic.missiles.modular.system.dao.DeptMapper; import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.system.ISystemSignService; import com.casic.missiles.service.system.ISystemSignUserRelationService; @@ -49,18 +51,30 @@ private SystemSignUserRelationMapper userRelationMapper; @Autowired private UserMapper userMapper; + @Autowired + private DeptMapper deptMapper; @Override public Page listPage(Page page, SignListRequest request) { QueryWrapper wrapper = getWrapper(request); Page signPage = signMapper.selectPage(page, wrapper); + signPage.getRecords().forEach(this::wrapper); return signPage; } @Override public List list(SignListRequest request) { QueryWrapper wrapper = getWrapper(request); - return signMapper.selectList(wrapper); + List list = signMapper.selectList(wrapper); + list.forEach(this::wrapper); + return list; + } + + private void wrapper(SystemSign systemSign){ + User user = userMapper.selectById(systemSign.getSignUserId()); + systemSign.setSignDeptId(user.getDeptId()); + Dept dept = deptMapper.selectById(user.getDeptId()); + systemSign.setSignDeptName(dept.getFullName()); } @Override @@ -153,7 +167,7 @@ private QueryWrapper getWrapper(SignListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("system_type", request.getSystemType()); - wrapper.eq("sign_type", request.getSignType()); +// wrapper.eq("sign_type", request.getSignType()); wrapper.like(StringUtils.isNotBlank(request.getSignNo()), "sign_no", request.getSignNo()); wrapper.like(StringUtils.isNotBlank(request.getSignName()), "sign_name", request.getSignName()); wrapper.like(StringUtils.isNotBlank(request.getSignDirector()), "sign_director", request.getSignDirector()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java new file mode 100644 index 0000000..0b1a8d7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -0,0 +1,531 @@ +package com.casic.missiles.service.listeners.register; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.util.ParseWord07; +import com.deepoove.poi.data.TextRenderData; +import com.deepoove.poi.data.style.Style; +import com.spire.doc.*; +import com.spire.doc.documents.*; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:zt + * @Create:2023/3/7/9:30 + * @Description:TODO Word文件操作工具类 + * @Version:1.0 + */ + +public class FilePrintRegisterUtils { + + //关键字索引 (-1) + private final static Integer keyWordIndex = -1; + //照片透明度设置 + private final static int alpha = 150; + + /** + * @param filePrintRegister 证书文件注册 + */ + public static String filePrintGenerate(FilePrintRegister filePrintRegister) throws RuntimeException { + //1、按照模板填充数据,并导出word,执行填充行数之后,再进行页数的填充 + String wordOldUrl = exportWord(filePrintRegister.getTemplatePath(), filePrintRegister.getTemDir(), filePrintRegister.getFileName(), filePrintRegister.getParams()); +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// document.getPageCount(); + //设置透明属性 1、获取照片 2、签章背景透明设置 3、设置照片路径和照片类型进行图片保存 +// for (ElectronicImage electronicSeal : filePrintRegister.getElectronicImageList()) { +// BufferedImage bi = readImage(electronicSeal.getElectronicSealImageUrl()); +// BufferedImage electronSealImage = convertLayout(bi, electronicSeal.getDiaphaneity()); +// String stampImgUrl = electronicSeal.getElectronicSealImageUrl(); +// String imagePath = stampImgUrl.substring(0, stampImgUrl.length() - 4) + "1.png"; +// String[] imageCutOffContents = stampImgUrl.split("."); +// electronicSeal.setElectronicSealImageUrl(imagePath); +// saveFile(electronSealImage, imageCutOffContents[imageCutOffContents.length - 1], imagePath); +// } + if (CollectionUtils.isNotEmpty(filePrintRegister.getElectronicImageList())) { + //按关键字进行分组 + Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .collect( + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); + //3、根据关键字进行添加签章和签字 + for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { + List electronicSeals = entry.getValue(); + addSameKeyWordStamp(wordOldUrl, wordOldUrl, electronicSeals); + } + //获取没有关键字的图片,即绝对路径的图片 + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) + .collect(Collectors.toList()); + //根据设置的绝对路径进行图片的填充 + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordOldUrl, absolutePathImage); + } + //由于合成word总页数存在不准确,先转换为pdf进行获取合成证书总页数, 处理齐缝章 + } + return wordOldUrl; + } + + + /** + * 将相同关键字的印章添加到同一个位置进行打印 + * 1、根据关键词位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + * @param electronicSealList 电子印章信息 + */ + private static void addSameKeyWordStamp(String wordOldUrl, String + wordNewUrl, List electronicSealList) throws RuntimeException { + if (CollectionUtils.isEmpty(electronicSealList)) { + return; + } + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取关键字位置 + TextSelection[] textSelections = document.findAllString(electronicSealList.get(0).getKeyWord(), false, false); + for (ElectronicImage electronicSeal : electronicSealList) { + //加签章照片 + if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { + throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + } + //多处关键字添加同一个签章 + for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { + Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); + textSelections[keyWordIndex].getCount(); + + //添加公司印章 + DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + //指定电子章位置 + //水平位置 + docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); + //垂直位置 + docPicture.setVerticalPosition(electronicSeal.getVertical()); + //设置电子章大小 + docPicture.setWidth(electronicSeal.getStampWidth()); + docPicture.setHeight(electronicSeal.getStampHeight()); + } + } + + //保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); + } + + /** + * 替换书签名位置文本内容 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newBookmarkText 新文本内容 + */ + private static void replaceBookmarkContent(Document document, String bookmarkName, String newBookmarkText) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //用文本内容替换原有书签位置的文本,新替换的内容与原文格式一致 + bookmarksNavigator.replaceBookmarkContent(newBookmarkText, true); + } + + /** + * word转PDF + * + * @param wordNewUrl word文件路径 + * @param pdfNewUrl 存储新PDF文件路径 + */ + public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { +// 将新Word文档转换为PDF文件 + Document document = new Document(); + document.loadFromFile(wordNewUrl); + document.saveToFile(pdfNewUrl, FileFormat.PDF); + document.dispose(); + } + + /** + * 图片透明背景转换 + * + * @param imgsrc + * @param alpha + * @return + */ + public static BufferedImage convertLayout(BufferedImage imgsrc, float alpha) { + try { + //创建一个包含透明度的图片,半透明效果必须要存储为png合适才行,存储为jpg,底色为黑色 + BufferedImage back = new BufferedImage(imgsrc.getWidth(), imgsrc.getHeight(), BufferedImage.TYPE_INT_ARGB); + int width = imgsrc.getWidth(); + int height = imgsrc.getHeight(); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + int rgb = imgsrc.getRGB(i, j); + Color color = new Color(rgb); + Color newcolor = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + back.setRGB(i, j, newcolor.getRGB()); + } + } + return back; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //读取图片 + private static BufferedImage readImage(String imgpath) { + try { + BufferedImage bufferedImage = ImageIO.read(new File(imgpath)); + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + //保存图片,extent为格式,"jpg"、"png"等 + private static void saveFile(BufferedImage img, String extent, String newfile) { + try { + ImageIO.write(img, extent, new File(newfile)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 1、自定义位置添加电子印章 + * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 + * + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 + */ + private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + //获取指定段落 + Section section = document.getSections().get(0); + //log.info("获取文档内容段落总数{}",count); + Paragraph paragraph = section.getParagraphs().get(0); + // 判断是否需要替换书签位置文本内容 + if (StringUtils.isNotEmpty(absolutePathImage.getBookmarkName())) { + replaceBookmarkContent(document, absolutePathImage.getBookmarkName(), absolutePathImage.getNewBookmarkText()); + } +// 添加电子印章 + DocPicture docPicture = paragraph.appendPicture(absolutePathImage.getElectronicSealImageUrl()); + +// 指定电子章位置 +// 水平位置 + docPicture.setHorizontalPosition(absolutePathImage.getHorizontal()); +// 垂直位置 + docPicture.setVerticalPosition(absolutePathImage.getVertical()); + +// 设置电子章大小 + docPicture.setWidth(absolutePathImage.getStampWidth()); + docPicture.setHeight(absolutePathImage.getStampHeight()); + +// 设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + // 保存添加电子章的Word文档 + document.saveToFile(wordNewUrl); + document.dispose(); +// log.info("文档添加电子印章结束,新WORD文档地址:{}",wordNewUrl); + } + + + /** + * 替换书签名位置文本内容为图片 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + * @param newImgUrl 图片地址 + */ + public void replaceBookmarkContentToImg(Document document, String bookmarkName, String newImgUrl) { + //定位到指定书签位置 + BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document); + bookmarksNavigator.moveToBookmark(bookmarkName); + //添加图片,替换原有书签内容 + Paragraph para = new Paragraph(document); + para.appendPicture(newImgUrl); + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(para); + bookmarksNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 替换书签名位置文本内容为表格 + * + * @param document word文档对象 + * @param bookmarkName 书签名 + */ + public void replaceBookmarkContentToTable(Document document, String bookmarkName) { + //声明数组内容 + String[][] data = + { + new String[]{"分类", "等级", "编号"}, + new String[]{"A", "一级", "01A"}, + new String[]{"B", "二级", "02B"}, + new String[]{"C", "三级", "03C"}, + }; + + //创建表格 + Table table = new Table(document, true); + table.resetCells(4, 3); + for (int i = 0; i < data.length; i++) { + TableRow dataRow = table.getRows().get(i); + for (int j = 0; j < data[i].length; j++) { + TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]); + range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + range.getCharacterFormat().setFontName("楷体"); + dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center); + dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); + } + } + + //创建TextBodyPart对象 + TextBodyPart bodyPart = new TextBodyPart(document); + bodyPart.getBodyItems().add(table); + + //定位到指定书签位置 + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.moveToBookmark(bookmarkName); + + //使用表格替换原书签的内容 + bookmarkNavigator.replaceBookmarkContent(bodyPart); + } + + /** + * 文件转流 + * + * @param wordNewUrl + * @return + */ + public byte[] getBytesByFile(String wordNewUrl) { + try { +// byte[] bytes = Files.readAllBytes(Paths.get(wordNewUrl)); + File file = new File(wordNewUrl); + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] b = new byte[1024]; + int len = -1; + while ((len = fis.read(b)) != -1) { + bos.write(b, 0, len); + } + fis.close(); + bos.close(); + byte[] bytes = bos.toByteArray(); + System.out.println("successful..."); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * doc 转 docx + * + * @param sourceFilePath 源文件路径 + * @param destFilePath 转换成docx文件路径 + */ + public static void docToDocx(String sourceFilePath, String destFilePath) { + Document document = new Document(); + document.loadFromFile(sourceFilePath); + document.saveToFile(destFilePath); + } + + /** + * 流转文件 + * + * @param buf 流字节数组 + * @param filePath 新文件路径 + * @param fileName 新文件名称 + */ + public static void byteToFile(byte[] buf, String filePath, String fileName) { + BufferedOutputStream bos = null; + FileOutputStream fos = null; + File file = null; + try { + File dir = new File(filePath); + if (!dir.exists() && dir.isDirectory()) { + dir.mkdirs(); + } + file = new File(filePath + File.separator + fileName); + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + bos.write(buf); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 按照模板 填充数据生成word 只支持docx + * + * @param templatePath 模板文件路径 + * @param temDir 生成文件的目录 + * @param fileName 生成文件名 + * @param params 参数 + */ + public static String exportWord(String templatePath, String temDir, String fileName, Map params) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + if (fileName.endsWith(".doc")) { + docToDocx(templatePath, templatePath + "x"); + templatePath += "x"; + fileName+="x"; + } + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + File dir = new File(temDir); + if (!dir.getParentFile().exists()) { + // 新建文件夹 + dir.getParentFile().mkdirs(); + } + String tmpPath = ""; + FileOutputStream fos = null; + try { + ParseWord07 parseWord07 = new ParseWord07(); + XWPFDocument doc = parseWord07.parseWord(templatePath, params); + tmpPath = temDir + fileName; + fos = new FileOutputStream(tmpPath); + doc.write(fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return tmpPath; + } + + + public static void main(String[] args) throws RuntimeException { + String pathUrl = "D:\\casic"; + String localPathUrl = "D:\\casic\\"; + // 目标文件地址 + String wordOldUrl = pathUrl + "\\工作记录单.docx"; + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + Map assetMap = new HashMap<>(); + assetMap.put("assetName", "我不是设备名称"); + assetMap.put("model", "我不是型号"); + assetMap.put("assetNo", "我是设备编号"); + assetList.add(assetMap); + } + params.put("assetList", assetList); + params.put("logNo", "本编号"); + params.put("laboratoryName", "此去半生"); + params.put("executiveAddress", "猜猜我在哪里"); + + params.put("test", new TextRenderData("R", new Style("Wingdings 2", 14))); + params.put("error", new TextRenderData("*", new Style("Wingdings 2", 14))); + + String newOldUrl = exportWord(wordOldUrl, localPathUrl, "temp.docx", params); + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = newOldUrl.replaceAll("docx", "pdf"); + wordToPdf(newOldUrl, pdfNewUrl); +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\ceshi.jpg"; +// // word文档内容关键字 +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// //加载文档 +// Document document = new Document(); +// document.loadFromFile(wordOldUrl); +// //获取段落总数 +// int count = document.getPageCount(); +// System.out.println(count); +// String[] imageCutOffContents = stampSealImgUrl.split("\\."); +// CropPicture cropPicture = CropPicture.builder() +// .targetImgUrl(stampSealImgUrl) +// .cutCols(count) +// .cutRows(1) +// .subfileUrl(imageCutOffContents[imageCutOffContents.length - 2]) +// .subfileType("." + imageCutOffContents[imageCutOffContents.length - 1]) +// .build(); +// try { +// ImageTool.crosswiseCutting(cropPicture); +// } catch (IOException ex) { +// +// } +//// 将新word转化为pdf文件 +//// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + } + + protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-50f) + .horizontal(450f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + +} \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java new file mode 100644 index 0000000..319a11a --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/ImageTool.java @@ -0,0 +1,77 @@ +package com.casic.missiles.service.listeners.register; +import com.casic.missiles.dto.certificate.CropPicture; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ImageTool { + + public static List crosswiseCutting(CropPicture cropPicture) throws IOException { + // 读入大图 + File file = new File(cropPicture.getTargetImgUrl()); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + int chunks = cropPicture.getCutRows() * cropPicture.getCutCols(); + ImageReader imageReader=ImageIO.getImageReadersBySuffix(cropPicture.getTargetImgUrl()).next(); + // 计算每个小图的宽度和高度 + int chunkWidth = image.getWidth() / cropPicture.getCutCols(); + int chunkHeight = image.getHeight() / cropPicture.getCutRows(); + System.out.println("图片的宽度为:" + chunkWidth * cropPicture.getCutRows() + "图片的高度为:" + chunkHeight * cropPicture.getCutCols());//230,278 + BufferedImage imgs[] = new BufferedImage[chunks]; + for (int x = 0,count = 0; x < cropPicture.getCutRows(); x++) { + for (int y = 0; y < cropPicture.getCutCols(); y++) { + //设置小图的大小和类型 + imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType()); + //写入图像内容 + Graphics2D gr = imgs[count++].createGraphics(); + gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null); + System.out.println("源矩阵第一个角的坐标" + chunkWidth * y + "+" + chunkHeight * x + "源矩阵第二个角的坐标" + chunkWidth * (y + 1) + "+" + chunkHeight * (x + 1)); + gr.dispose(); + } + } + List subfileUrls = new ArrayList<>(); + // 输出小图 + for (int i = 0; i < imgs.length; i++) { + subfileUrls.add(cropPicture.getSubfileUrl() + i + cropPicture.getSubfileType()); + ImageIO.write(imgs[i], cropPicture.getSubfileType(), new File(subfileUrls.get(subfileUrls.size() - 1))); + System.out.println(i); + } + System.out.println("完成分割!"); + return subfileUrls; + } + + public static void main(String[] agrs) throws IOException { + String originalImg = "D:\\casic\\tmp\\1645701777117741057\\ceshi.jpg"; + // 读入大图 + File file = new File(originalImg); + FileInputStream fis = new FileInputStream(file); + System.out.println(file.exists()); + BufferedImage image = ImageIO.read(fis); + /* + * 假设我需要切割的四点坐标为a(20,30)b(200,40)c(30,200)d(200,210) + * 起始坐标为(最小的x,最小的y) + * 此时的实际切割坐标应为由a为起始坐标,width为(x坐标最大的点的x - a的x坐标),height为(y坐标最大的点的y - a的y坐标) + * 此时的width为180,height为180 + */ + //切割图片 + BufferedImage bf = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D graphics2D = bf.createGraphics(); + graphics2D.drawImage(image, 20, 30, 180, 180, 0, 0, 180, 180, null); + graphics2D.dispose(); + //输出图片 + Random random = new Random(); + int j = random.nextInt(1000); + ImageIO.write(bf, "jpg", new File("D:\\casic\\tmp\\1645701777117741057" + j + ".jpg")); + System.out.println("完成切割"); + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java new file mode 100644 index 0000000..bd6dacd --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -0,0 +1,254 @@ +package com.casic.missiles.service.listeners.register; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.service.listeners.register.data.GenericFilePrintProcessor; +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.List; +import java.util.Map; + +/** + * 这个方面上面必须再封装一层,保证打印的速度更快 + * + * @author cz + * @date 2023-03-06 + */ +@Component +@Slf4j +public class PrintFileRegister { + + @Autowired + private MinioClient minioClient; + @Autowired + private GenericFilePrintProcessor genericFilePrintProcessor; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + @Value("${casic.file.dir}") + private String localFileDir; + + /** + * 打印文件注册到服务器上有以下几个步骤 + * 1、根据打印证书的模块类型、模块名称及模块对应的单据id获取打印的信息 + * 2、进行远程文件的下载工作,支持文件的读写权限操作 + * 3、进行文件的填充合并等操作,即通过模板进行打印证书的信息注册 + * 4、将注册产生的打印证书信息上传到服务器 + * 5、递归删除因为打印产生的文件信息 + * 6、返还打印产生的证书文件 + * + * @param moduleName 模块名称(必填) + * @param moduleType 模块类型(字典值)(选填) + * @param moduleIdValue 模块id + * @param customParam 定制化填充参数 与模块id二选1 + * @param isPdf 是否是pdf + * @param response 返回流 + */ + public void registerPrintFile(String moduleName, String moduleType, + Long moduleIdValue, Map customParam, + Boolean isPdf, HttpServletResponse response) { + String tempLocalFileDir = localFileDir; + Assert.isFalse(StringUtils.isEmpty(moduleName), () -> { + throw new RuntimeException("the moduleName is null,please check your params..."); + }); + FilePrintRegister filePrintRegister = genericFilePrintProcessor.printFileRegister(moduleName, moduleType, customParam, moduleIdValue, tempLocalFileDir); + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); + } + String printDocUrl = null; + //合并注册 + try { + printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + if (isPdf) { + //默认转为docx,只需要进行docx的替换即可 + String pdfNewUrl = printDocUrl.replaceAll("docx", "pdf"); +// pdfNewUrl = "天气纪要.pdf"; + // 4、将新word转化为pdf文件 + FilePrintRegisterUtils.wordToPdf(printDocUrl, pdfNewUrl); + printDocUrl = pdfNewUrl; + } + } catch (RuntimeException rex) { + log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); + } finally { + //如果文件路径不为空,回传文件流 + if (StringUtils.isNotEmpty(printDocUrl)) { + createResponseFileInput(printDocUrl, response); + } + //删除无效的文件 + File invalidFile = new File(tempLocalFileDir); + //删除运行空间下的文件 + deleteFile(invalidFile); + } + } + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + private void downTemplateFile(String fileName, String tempLocalFileDir) { + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + @Deprecated + public String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + private void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + private void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java new file mode 100644 index 0000000..d63c5ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -0,0 +1,202 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +public class ElectronicSignSeal extends ElectronicSignTemplate implements FilePrintEnum { + + + /** + * 有关键字的非工作流人员章 + * + * @param extendImageMapList + * @return + */ + private static List electronicKeySignSeals(List extendImageMapList, Map metaDataMap, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + for (Map extendImageMap : extendImageMapList) { + ElectronicImage electronicImage = defaultElectronicImage((String) extendImageMap.get(DOC_NAME)); + if (metaDataMap.containsKey((String) extendImageMap.get(FILED_NAME)) && ObjectUtils.isNotEmpty(metaDataMap.get(extendImageMap.get(FILED_NAME)))) { + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + (String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(extendImageMap.get(FILED_NAME))); + electronicImageSeals.add(electronicImage); + } + } + return electronicImageSeals; + } + + /** + * 没有关键字的认可章列表构建 + * + * @param sings + * @param filePrintRegister + */ + public static void electronicNoKeySignSeals(String sings, FilePrintRegister filePrintRegister) { + List electronicImageSeals = new ArrayList<>(); + if (StringUtils.isNotEmpty(sings)) { + String[] signIds = sings.split(","); + List electronicImages = autoCreteAbsoluteSignSealByNumber(signIds.length); + for (int i = 0; i < signIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(signIds[i]), electronicImages.get(i), filePrintRegister)); + } + } + filePrintRegister.setElectronicImageList(electronicImageSeals); + } + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + private static ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + public static void approvalImage(Map metaDataMap, JSONObject imageMap, List imageMapList, FilePrintRegister filePrintRegister) { + + if (StringUtils.isNotEmpty(imageMap.get(APPROVAL_FIELD).toString())) { + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString()), + () -> { + throw new BusinessException(BusinessExceptionEnum.APPROVAL_FIELD_ERROR); + }); + IBaseApprovalService approvalOperateService = SpringContextUtil.getBean(IBaseApprovalService.class); + + if (!metaDataMap.containsKey(imageMap.get(APPROVAL_FIELD).toString())) { + Iterator> it = metaDataMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof List) { + List innerMetaDataList = (List) entry.getValue(); + if (ObjectUtils.isNotEmpty(innerMetaDataList)) { + for (Object innerMetaDataObject : innerMetaDataList) { + List> approvalLogList = null; + Field[] fields = innerMetaDataObject.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + try { + if (imageMap.get(APPROVAL_FIELD).equals(field.getName()) && field.get(innerMetaDataObject) != null) { + approvalLogList = approvalOperateService.approvalLog(field.get(innerMetaDataObject).toString()); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } catch (Exception ie) { + throw new BusinessException(500, "字段映射异常"); + } + } + } + } + } + } + } else { + //获取 + List> approvalLogList = approvalOperateService.approvalLog((String) metaDataMap.get(imageMap.get(APPROVAL_FIELD).toString())); + bindSignPictureKey(filePrintRegister, imageMapList, approvalLogList); + } + } + } + + /** + * 构建带有关键字的工作流签名图片方法 + */ + public static void bindSignPictureKey(FilePrintRegister filePrintRegister, List imageMapList, List> approvalLogList) { + if (CollectionUtils.isEmpty(approvalLogList)) { + return; + } + Map> approvalLogMap = null; + approvalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e,(e1,e2)->e1)); + //处理文中的章 + if (ObjectUtils.isNotEmpty(approvalLogMap)) { + //处理具备审批标志的 + List approvalImageMapList = imageMapList.stream() + .filter(imagesMap -> "1".equals(imagesMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.signNamesCreator(approvalLogMap, filePrintRegister, approvalImageMapList)); + } + } + + /** + * 构建带有关键字的图片方法 + */ + public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageMapList, Map metaDataMap) { + //处理文中的章 + List extendImageMapList = imageMapList.stream() + .filter(imageMap -> "0".equals(imageMap.get(APPROVAL_FLAG))) + .collect(Collectors.toList()); + filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageMapList, metaDataMap, filePrintRegister)); + } + + + /** + * 电子签名创建器 + */ + public static List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister, List approvalImageMapList) { + if (CollectionUtils.isEmpty(approvalImageMapList)) { + return null; + } + List electronicImageList = new ArrayList<>(); + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + int timeSeqCount = 1; + for (int i = 0; i < approvalImageMapList.size(); i++) { + //是不是当前的人员,不是就skip + if (!approvalLogMap.containsKey(approvalImageMapList.get(i).get(FILED_NAME))) { + continue; + } + final String customizedSignName = (String) approvalImageMapList.get(i).get(DOC_NAME); + List approvalLogList = approvalLogMap.get(approvalImageMapList.get(i).get(FILED_NAME)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + //设置时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(approvalLog.getFinishTime()); + filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); + filePrintRegister.getParams().put("day" + timeSeqCount++, calendar.get(Calendar.DAY_OF_YEAR)); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + } + } + return electronicImageList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java new file mode 100644 index 0000000..c297633 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -0,0 +1,105 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.certificate.ElectronicImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author cz + * @date 2023-8-15 + */ +public class ElectronicSignTemplate { + + /** + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-20f) + .horizontal(50f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签章的图片设置,允许重写 + */ + public static ElectronicImage defaultElectronicImage(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(10f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + /** + * 默认电子签名的图片设置,支持重写 + */ + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + + + /** + * 自动生成是根据宽度设定取空隙平均值 + * 默认电子签章的图片设置,允许重写 + * word长度大约为400*600 + * 其中定位点图片中心位置 + */ + protected static List autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) { + List electronicImageList = new ArrayList<>(); + ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal(""); + Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ? + 0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1); + ElectronicImage electronicImage = null; + Float tempIntervalWith = intervalWith; + for (int i = 0; i < sealsNumber; i++) { + electronicImage = defaultAbsoluteElectronicSignSeal(""); + electronicImage.setHorizontal(tempIntervalWith); + tempIntervalWith += intervalWith + templateElectronic.getStampWidth(); + electronicImageList.add(electronicImage); + } + return electronicImageList; + } + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java new file mode 100644 index 0000000..fbbca76 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java @@ -0,0 +1,457 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.dto.system.FieldTableDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.FilePrintEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.file.ModuleFieldMapper; +import com.casic.missiles.mapper.file.ModuleTemplatePrintMapper; +import com.casic.missiles.mapper.file.PrintFileRegisterMapper; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import com.casic.missiles.utils.SpringContextUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import javax.annotation.Resource; +import java.io.File; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author cz + * @date 2023-8-14 + */ +public class FilePrintSupport implements FilePrintEnum { + + @Resource + private ModuleFieldMapper moduleFieldMapper; + @Resource + private ModuleTemplatePrintMapper moduleTemplatePrintMapper; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + + PrintFileRegisterMapper fileRegisterMapper = SpringContextUtil.getBean(PrintFileRegisterMapper.class); + //查询模板id,获取模板的minFileName + String templateName = fileRegisterMapper.getTemplateFileById(moduleTemplatePrintConfig.getTemplateFileId()); + filePrintRegister.setFileName(templateName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + templateName); + filePrintRegister.setFileNameId(id); + //添加模板到待下载列表 + List fileNames = new ArrayList<>(); + fileNames.add(templateName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + //这里需要添加电子签章 + ElectronicSignSeal.electronicNoKeySignSeals(moduleTemplatePrintConfig.getSigns(), filePrintRegister); + //添加默认的参数 + filePrintRegister.setParams(populateDefaultParam()); + return filePrintRegister; + } + + /** + * 新增填充默认参数 + */ + private Map populateDefaultParam() { + Map param = new HashMap<>(); + param.put("currentDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())); + param.put("currentTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + return param; + } + + /** + * 获取关联表配置 + * + * @param relateModuleIds + * @return + */ + protected List getRelateModuleFieldConfig(String relateModuleIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List relateModuleIdList = new ArrayList<>(); + String[] typeStr = relateModuleIds.split(","); + for (int i = 0; i < typeStr.length; i++) { + relateModuleIdList.add(Long.valueOf(typeStr[i])); + } + queryWrapper.in("id", relateModuleIdList); + List moduleFieldConfigList = moduleFieldMapper.selectList(queryWrapper); + return moduleFieldConfigList; + } + + /** + * ' + * 获取模块配置 + * + * @param moduleName + * @param moduleType + * @return + */ + protected ModuleTemplatePrintConfig getModuleTemplatePrintConfig(String moduleName, String moduleType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("module_name", moduleName); + queryWrapper.eq(StringUtils.isNotEmpty(moduleType), "module_type", moduleType); + List moduleFieldConfigList = moduleTemplatePrintMapper.selectList(queryWrapper); + Optional optionalModuleConfig = moduleFieldConfigList.stream().findFirst(); + return optionalModuleConfig.isPresent() ? optionalModuleConfig.get() : null; + } + + /** + * 当前模块的信息 + * + * @param filePrintRegister 打印注册信息 + * @param moduleFieldId 模块文件id + * @param moduleIdValue + * @return 返回类型的数据 + */ + protected Map moduleField(FilePrintRegister filePrintRegister, Long moduleFieldId, Long moduleIdValue) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //获取当前模块对应的信息 + List> metaDataList = moduleFieldMapper.getBizMapList(moduleFieldConfig.getTableName(), moduleIdValue); + Map tableNameMap = new HashMap<>(); + if (metaDataList.size() == 1) { + Map metaDataMap = metaDataList.get(0); + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + filePrintRegister.setParams(metaDataMap); + //时间格式的转换,统一处理 + convertMapDate(metaDataMap); + } else if (metaDataList.size() > 0) { + int count = 1; + for (Map relateBizMap : metaDataList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : metaDataList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + filePrintRegister.getParams().put(shortName, metaDataList); + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), metaDataList); + return tableNameMap; + } + + + //空的,留作扩展使用 + protected void moduleCustomizedProcessing(FilePrintRegister filePrintRegister, + Map customParam, + ModuleTemplatePrintConfig moduleTemplatePrintConfig) { + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + if (ObjectUtils.isNotEmpty(moduleFieldId)) { + //获取当前模块配置 + ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); + //构建图片元素 + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + if (StringUtils.isNotEmpty(relateModuleIds)) { + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //构建图片元素 + for (ModuleFieldConfig moduleFieldConfig : moduleFieldConfigs) { + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig.getImageJson()); + } + } + //处理map中的自带的图片参数 + if (Objects.nonNull(filePrintRegister.getParams())) { + filePrintRegister.getParams().putAll(customParam); + } else { + filePrintRegister.setParams(customParam); + } + + } + + /** + * 相当于消费存在一定的顺序 + * + * @param tableNameMap 前置执行表结果的缓存 + * @param filePrintRegister 打印注册信息 + * @param moduleFieldConfig 模块配置信息 + * @return 返回类型的数据 + */ + protected void relateModuleField(FilePrintRegister filePrintRegister, + Map tableNameMap, + ModuleFieldConfig moduleFieldConfig) { + //健壮性校验,没有关联关系,直接退出 + if (StringUtils.isEmpty(moduleFieldConfig.getRelationJson())) { + return; + } + //构建查询参数 + List fieldTableDTOList = buildFieldTableDTOList(moduleFieldConfig.getRelationJson(), tableNameMap); + //健壮性校验 + if (CollectionUtils.isNotEmpty(fieldTableDTOList)) { + List> relateBizMapList = null; + //当前集合的长度为1,且设置的in查询为true,可以执行外键 + if (fieldTableDTOList.size() == 1 && fieldTableDTOList.get(0).getSqlIn()) { + List relateIdList = new ArrayList<>(); + String[] typeStr = fieldTableDTOList.get(0).getForeignKeyValue().split(","); + for (int i = 0; i < typeStr.length; i++) { + relateIdList.add(Long.valueOf(typeStr[i])); + } + //执行关联表“in”查询 + relateBizMapList = moduleFieldMapper.inRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList.get(0).getForeignKeyField(), relateIdList); + } else { + //执行关联表“=”号查询 + relateBizMapList = moduleFieldMapper.equalRelateBizList(moduleFieldConfig.getTableName(), fieldTableDTOList); + } + //健壮性校验 + if (CollectionUtils.isEmpty(relateBizMapList)) { + return; + } + //判断是否是用于doc填充 + if (ObjectUtils.isNotEmpty(moduleFieldConfig.getDocUse()) && 1 == moduleFieldConfig.getDocUse()) { + int count = 1; + for (Map relateBizMap : relateBizMapList) { + convertMapDate(relateBizMap); + relateBizMap.put("seq", count++); + } + //执行当前集合的其他元素查询,例如图片,工作流等字段图片 + for (Map metaDataMap : relateBizMapList) { + buildModuleElement(metaDataMap, moduleFieldConfig, filePrintRegister); + } + String shortName = getShortName(moduleFieldConfig.getTableName(), filePrintRegister.getParams()); + //判断当前模块信息在单元格中的执行情况 + if (StringUtils.isEmpty(moduleFieldConfig.getObjectString())) { + //不作为当前一个单元格执行 + filePrintRegister.getParams().put(shortName, relateBizMapList); + } else { + filePrintRegister.getParams().put(shortName, objectListToString(relateBizMapList, moduleFieldConfig.getObjectString())); + } + } + //无论是否用于doc文档,都需要将当前元素集合保存到临时缓存 + tableNameMap.put(moduleFieldConfig.getTableName(), relateBizMapList); + } + } + + /** + * 构建关联模块的查询参数 + * + * @param relationJson + * @param tableNameMap + * @return + */ + private List buildFieldTableDTOList(String relationJson, Map tableNameMap) { + List fieldTableDTOList = new ArrayList<>(); + List relationMapList = JSON.parseArray(relationJson, Map.class); + for (Map relationMap : relationMapList) { + //判断是否设备字段,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_ID_FIELD) || ObjectUtils.isEmpty(relationMap.get(RELATE_ID_FIELD)), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_FIELD_NULL); + }); + //判断是否有值,健壮性校验 + Assert.isFalse(!relationMap.containsKey(RELATE_TABLE_NAME) || ObjectUtils.isEmpty(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME))), + () -> { + throw new BusinessException(BusinessExceptionEnum.FOREIGN_KEY_VALUE_NULL); + }); + //构建外键信息 + String relationIds = buildForeignKeyValue(tableNameMap.get(relationMap.get(RELATE_TABLE_NAME)), relationMapList.size(), (String) relationMap.get(RELATE_ID_FIELD)); + //健壮性校验 + if (StringUtils.isNotEmpty(relationIds)) { + // 默认为单个关联外键 + fieldTableDTOList.add(FieldTableDTO.builder() + .foreignKeyField((String) relationMap.get(CURRENT_ID_FIELD)) + //可能存在多个情况,需要进行单表的查询 + .foreignKeyValue(relationIds) + .sqlIn(false) + .build()); + //如果ids存在,默认为多个关联外键 + if (relationIds.contains(",")) { + fieldTableDTOList.get(fieldTableDTOList.size() - 1).setSqlIn(true); + } + } + } + return fieldTableDTOList; + } + + /** + * 获取表的简称,自动生成驼峰简称 + * 1、规则是biz_user_info,根据表的情况,由于info没有实际信息意义,排除info情况,取user + * 2、如果当前集合已经含有user,则向前读取为bizUser + * 获取表定义的简称 + * + * @param tableName + * @return + */ + private String getShortName(String tableName, Map params) { + String[] tableNameFragment = tableName.split("_"); + int count = 1; + String shortTableName = tableNameFragment[tableNameFragment.length - count++]; + //排除info的情况 + if (tableNameFragment[tableNameFragment.length - 1].equals("info")) { + shortTableName = tableNameFragment[tableNameFragment.length - count++]; + } + //再次进行查询 + while (params.containsKey(shortTableName) && count < tableNameFragment.length) { + shortTableName = tableNameFragment[tableNameFragment.length - count++] + shortTableName.substring(0, 1).toUpperCase() + shortTableName.substring(1); + } + return shortTableName; + } + + + //当前表的字段作为单元格中string内容,执行一下操作 + private String objectListToString(List> relateBizMapList, String objectString) { + String[] objectFieldStr = objectString.split(","); + String relateBizStr = ""; + for (Map relateBizMap : relateBizMapList) { + for (String objectField : objectFieldStr) { + relateBizStr += ObjectUtils.isNotEmpty(relateBizMap.get(objectField)) ? + (String) relateBizMap.get(objectField) : "无"; + relateBizStr += ","; + } + relateBizStr = relateBizStr.substring(0, relateBizStr.length() - 1); + relateBizStr += ";\n"; + } + return relateBizStr; + } + + /** + * 构建外键和值得关系 + * + * @param relationObject + * @param relateListSize + * @param relateIdField + * @return + */ + private String buildForeignKeyValue(Object relationObject, Integer relateListSize, String relateIdField) { + //健壮性的校验 + if (StringUtils.isEmpty(relateIdField)) { + return null; + } + //如果是list集合,进行list ids的组装 + if (relationObject instanceof List) { + String relationIds = ""; + if (relateListSize == 1) { + List relationObjectList = (List) relationObject; + for (Map relationMap : relationObjectList) { + if (relationMap.containsKey(relateIdField)) { + relationIds += (Long) relationMap.get(relateIdField); + relationIds += ","; + } else { + return null; + } + } + relationIds = relationIds.substring(0, relationIds.length() - 1); + return relationIds; + } + } + //如果是map集合,说明是单个集合,只有一个外键 + if (relationObject instanceof Map) { + Map relationMap = (Map) relationObject; + if (relationMap.containsKey(relateIdField)) { + String relationIds = (Long) relationMap.get(relateIdField) + ""; + return relationIds; + } + } + return null; + } + + /** + * 模块内容元素构建1、字典信息 2、关键字图片信息 + */ + protected void buildModuleElement(Map metaDataMap, ModuleFieldConfig moduleFieldConfig, FilePrintRegister filePrintRegister) { + //字典信息 + String dictJson = moduleFieldConfig.getDictJson(); + if (StringUtils.isNotEmpty(dictJson)) { + //处理字典信息 + List dictMapList = JSON.parseArray(dictJson, Map.class); + for (Map dictCodeMap : dictMapList) { + convertDictCode((String) dictCodeMap.get(CODE), (String) dictCodeMap.get(FILED_NAME), metaDataMap); + } + } + /** + * 构建图片json元素 + */ + buildDocImageElement(metaDataMap, filePrintRegister, moduleFieldConfig.getImageJson()); + } + + + /** + * 构建文件图片元素 + * + * @param metaDataMap + * @param filePrintRegister + * @param imageJson + */ + private void buildDocImageElement(Map metaDataMap, FilePrintRegister filePrintRegister, String imageJson) { + if (StringUtils.isNotEmpty(imageJson)) { + //获取审批流程的bean + JSONObject imageMap = JSON.parseObject(imageJson); + //处理图片信息 + List imageMapList = (List) imageMap.get(BIND_KEY_LIST); + //判断是否有工作流字段(approvalField,工作流map取出 + ElectronicSignSeal.approvalImage(metaDataMap,imageMap,imageMapList,filePrintRegister); + //健壮性校验,没有绑定的list结合去掉 + Assert.isFalse(ObjectUtils.isEmpty(imageMap.get(BIND_KEY_LIST)), + () -> { + throw new BusinessException(BusinessExceptionEnum.BIND_KEY_LIST_NULL); + }); + //执行构建关键字图片集合,默认为不会在列表中构建图片 + ElectronicSignSeal.bindPictureKey(filePrintRegister, imageMapList, metaDataMap); + } + } + + + /** + * 字典转换 + * + * @param code + * @param dictField + * @param metaDataMap + */ + private void convertDictCode(String code, String dictField, Map metaDataMap) { + if (StringUtils.isEmpty(code)) { + throw new BusinessException(2404, "缓存名不能为空"); + } + String codeValue = ""; + if (ObjectUtils.isEmpty(metaDataMap.get(dictField))) { + throw new BusinessException(2405, "缓存值不能为空"); + } else { + codeValue = (String) metaDataMap.get(dictField); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + String name = dictService.getDictNameByCode(code, codeValue); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(2406, "字典配置查询错误"); + } + String destFieldName = dictField + "Name"; + metaDataMap.put(destFieldName, name); + } + + /** + * 遍历当前map,进行时间格式的转换 + * + * @param map + */ + protected void convertMapDate(Map map) { + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue() instanceof Timestamp) { + String timeStr = DateFormatUtils.format((Timestamp) entry.getValue(), "yyyy-MM-dd HH:mm:ss", Locale.CHINESE); + map.put(entry.getKey(), timeStr); + } + } + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java new file mode 100644 index 0000000..536d844 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java @@ -0,0 +1,122 @@ +package com.casic.missiles.service.listeners.register.data; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.certificate.FilePrintRegister; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.file.ModuleFieldConfig; +import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author cz + * @date 2023-8-9 + */ +@Component +public class GenericFilePrintProcessor extends FilePrintSupport { + + /** + * @param moduleName 模块名称 + * @param moduleType 模块类型 + * @param moduleIdValue 当前模块信息的id值 + * @return + */ + public FilePrintRegister printFileRegister(String moduleName, String moduleType, Map customParam, Long moduleIdValue, String templateFileDir) { + //获取当前模板配置信息 + ModuleTemplatePrintConfig moduleTemplatePrintConfig = getModuleTemplatePrintConfig(moduleName, moduleType); + //判断是否有模板,没有直接抛出异常,健壮性校验 + Assert.isFalse(ObjectUtils.isEmpty(moduleTemplatePrintConfig.getTemplateFileId()), () -> { + throw new BusinessException(BusinessExceptionEnum.TEMPLATE_FILE_NULL); + }); + + //根据打印模板配置,初始化文件打印注册信息 + FilePrintRegister filePrintRegister = initialization(templateFileDir, moduleIdValue, moduleTemplatePrintConfig); + if (customParam != null) { + Assert.isFalse(ObjectUtils.isEmpty(customParam), () -> { + throw new RuntimeException("没有文件数据,请确保有数据后重试!"); + }); + //定制化的参数处理 + moduleCustomizedProcessing(filePrintRegister, customParam, moduleTemplatePrintConfig); + return filePrintRegister; + } + //以下分别执行当前表及关联表的参数信息(字典内容),图片信息,审批信息(图片) + Long moduleFieldId = moduleTemplatePrintConfig.getModuleFieldId(); + //查询当前模块主表的信息 + Map tableNameIdMap = moduleField(filePrintRegister, moduleFieldId, moduleIdValue); + //通过模块ids集合,进行关联模块参数的获取 + String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); + //判空健壮性校验 + if (StringUtils.isNotEmpty(relateModuleIds)) { + //获取关联模块的配置 + List moduleFieldConfigs = getRelateModuleFieldConfig(relateModuleIds); + //进行关联性模块的排序,主要根据是否前置条件满足进行排序 + List sortFieldConfigList = tryRelateModuleFieldConfigs(moduleFieldConfigs, tableNameIdMap); + //1、健壮性校验 2 对责任链执行链式操作 + if (CollectionUtils.isNotEmpty(sortFieldConfigList)) { + for (ModuleFieldConfig moduleFieldConfig : sortFieldConfigList) { + relateModuleField(filePrintRegister, tableNameIdMap, moduleFieldConfig); + } + } + } + + return filePrintRegister; + } + + /** + * 预消费阶段,在当前顺序遍历中,查询条件充足的靠前,需要前置条件的表格挂起靠后执行 + * + * @param moduleFieldConfigs + */ + private List tryRelateModuleFieldConfigs(List moduleFieldConfigs, Map tableNameMap) { + if (CollectionUtils.isEmpty(moduleFieldConfigs)) { + return null; + } + List sortFieldConfig = new ArrayList<>(); + int index = 0; + while (moduleFieldConfigs.size() != 0) { + List relationJson = JSON.parseArray(moduleFieldConfigs.get(index).getRelationJson(), Map.class); + //关联表的字段是否已经获取,已经获取支持进行查询,否则挂起 + Boolean matchTableName = tryMatchTableName(relationJson, tableNameMap); + if (matchTableName) { + //添加排序的集合 + sortFieldConfig.add(moduleFieldConfigs.get(index)); + //添加到映射集合 + tableNameMap.put(moduleFieldConfigs.get(index).getTableName(), null); + //在原来的无序集合移除 + moduleFieldConfigs.remove(index); + } else { + index++; + } + //重置为0 + if (index == moduleFieldConfigs.size()) { + index = 0; + } + } + return sortFieldConfig; + } + + /** + * 预匹配阶段,在当前顺序位置中,前置表集合是否已经存在,不存在返回false + * + * @param relationJson + * @param tableNameMap + * @return + */ + private Boolean tryMatchTableName(List relationJson, Map tableNameMap) { + Boolean matchTableFlag = true; + for (Map relationMap : relationJson) { + // {"relateIdField":" cutsomerId","tableName":"{bizModuleFieldConfigId}"} + matchTableFlag &= tableNameMap.containsKey(relationMap.get(RELATE_TABLE_NAME)); + } + return matchTableFlag; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java new file mode 100644 index 0000000..9b01b5c --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java @@ -0,0 +1,387 @@ +package com.casic.missiles.service.listeners.util; + +import cn.afterturn.easypoi.cache.WordCache; +import cn.afterturn.easypoi.entity.ImageEntity; +import cn.afterturn.easypoi.util.PoiPublicUtil; +import cn.afterturn.easypoi.word.entity.MyXWPFDocument; +import cn.afterturn.easypoi.word.entity.params.ExcelListEntity; +import cn.afterturn.easypoi.word.parse.excel.ExcelEntityParse; +import cn.afterturn.easypoi.word.parse.excel.ExcelMapParse; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigInteger; +import java.util.*; +import java.util.stream.Collectors; + +/** + * poi 类不满足列循环格式插入,修改源码后满足 + */ +public class ParseWord07 { + private static final Logger LOGGER = LoggerFactory.getLogger(cn.afterturn.easypoi.word.parse.ParseWord07.class); + + public ParseWord07() { + } + + /** + * word 解析入口类 + * + * @param url + * @param map + * @return + * @throws Exception + */ + public XWPFDocument parseWord(String url, Map map) throws Exception { + MyXWPFDocument doc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(doc, map); + return doc; + } + + /** + * 处理段落的{{ }}内容 + * 处理 + * + * @param doc + * @param map + * @throws Exception + */ + private void parseWordSetValue(MyXWPFDocument doc, Map map) throws Exception { + this.parseAllParagraph(doc.getParagraphs(), map); + this.parseHeaderAndFoot(doc, map); + Iterator itTable = doc.getTablesIterator(); + //处理表格替换 + while (itTable.hasNext()) { + XWPFTable table = (XWPFTable) itTable.next(); + if (table.getText().indexOf("{{") != -1) { + this.parseThisTable(table, map); + } + } + } + + /** + * 处理word中包含所有的段落 + * + * @param paragraphs + * @param map + * @throws Exception + */ + private void parseAllParagraph(List paragraphs, Map map) throws Exception { + for (int i = 0; i < paragraphs.size(); ++i) { + XWPFParagraph paragraph = (XWPFParagraph) paragraphs.get(i); + if (paragraph.getText().indexOf("{{") != -1) { + this.parseThisParagraph(paragraph, map); + } + } + } + + /** + * 核心替换方法 + *

+ * 段落处理段落,执行替换的情况 + * + * @param paragraph + * @param currentRun + * @param currentText 当前内容 + * @param runIndex 当前内容对应的下标 + * @param map 要替换成的参数集合 + * @throws Exception + */ + private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, List runIndex, Map map) throws Exception { + if (currentText.contains("fe:") && currentText.startsWith("{{")) { + currentText = currentText.replace("fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = currentText.replaceAll("\\s{1,}", " ").trim().split(" "); + List list = (List) PoiPublicUtil.getParamsValue(keys[0], map); + list.forEach((objx) -> { + if (objx instanceof ImageEntity) { + currentRun.setText("", 0); + ExcelMapParse.addAnImage((ImageEntity) objx, currentRun); + } else { + PoiPublicUtil.setWordText(currentRun, objx.toString()); + } + }); + } else { + Object obj = PoiPublicUtil.getRealValue(currentText, map); + if (obj instanceof ImageEntity) { + currentRun.setText("", 0); + ExcelMapParse.addAnImage((ImageEntity) obj, currentRun); + } else { + currentText = obj.toString(); + PoiPublicUtil.setWordText(currentRun, currentText); + } + } + for (int k = 0; k < runIndex.size(); ++k) { + ((XWPFRun) paragraph.getRuns().get((Integer) runIndex.get(k))).setText("", 0); + } + runIndex.clear(); + } + + //先执行预匹配,获取最大的长度,在进行之下的扩容 + private Integer checkTableMaxColLength(List cells, Map map, Integer maxExpansionLength) throws Exception { + int cellIndex = 0; + while (cellIndex < cells.size()) { + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("#fe:") && text.startsWith("{{")) { + break; + } + cellIndex++; + } + //匹配失败 + if (cellIndex >= cells.size()) { + return maxExpansionLength; + } + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("#fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + String[] paramKeys = keys[0].split("\\."); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + if (result instanceof List) { + List> resultMap = (List>) result; + List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); + return maxExpansionLength > resultList.size() ? maxExpansionLength : cellIndex + 1 + resultList.size(); + } + } + return maxExpansionLength; + } + + //先执行预匹配,获取最大的长度,在进行之下的扩容 + private Boolean checkThisTableCellIterator(List cells, XWPFTable table, + Map map, int row, Integer maxExpansionLength, Integer differExpansionLength) throws Exception { + int cellIndex = 0; + while (cellIndex < cells.size()) { + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("#fe:") && text.startsWith("{{")) { + break; + } + cellIndex++; + } + int currentIndex = cells.size() - 1; + //涉及扩容 + while (cells.size() - currentIndex < differExpansionLength) { + cells.get(0).getTableRow().createCell(); + } + //合并,且去除合并包含都是一列的情况 + if (currentIndex + 1 < (maxExpansionLength - differExpansionLength)) { + //列合并 + mergeCellsHorizontal(cells, currentIndex, currentIndex + differExpansionLength - 1); + } + if (cellIndex >= currentIndex) { + return false; + } + String text = cells.get(cellIndex).getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("#fe:", "").replace("{{", "").replace("}}", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + String[] paramKeys = keys[0].split("\\."); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + if (result instanceof List) { + List> resultMap = (List>) result; + List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); + int resultIndex = 0; + //清理参数 + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + //涉及扩容 + Integer differCol = cells.size() - cellIndex; + BigInteger weight = table.getCTTbl().getTblGrid().getGridColList().get(0).getW(); + for (CTTblGridCol ctTblGridCol : table.getCTTbl().getTblGrid().getGridColList()) { + ctTblGridCol.setW(weight); + } + //改变不了原来的格式,例如光标位置 + while (resultIndex < resultList.size() && cellIndex < cells.size()) { + if (resultIndex >= differCol) { + CTTbl currentTbl = table.getCTTbl(); + CTTblGrid tblGrid = currentTbl.getTblGrid() != null ? currentTbl.getTblGrid() + : currentTbl.addNewTblGrid(); + tblGrid.addNewGridCol().setW(weight); + } + cells.get(cellIndex).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); + cells.get(cellIndex++).setText(String.valueOf(resultList.get(resultIndex++))); + } + return true; + } + } + return false; + } + + public void mergeCellsHorizontal(List cells, int fromCell, int toCell) { + for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) { + XWPFTableCell cell = cells.get(cellIndex); + if (cellIndex == fromCell) { + // The first merged cell is set with RESTART merge value + cell.getCTTc().getTcPr().addNewHMerge().setVal(STMerge.RESTART); + } else { + // Cells which join (merge) the first one, are set with CONTINUE + cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); + } + } + } + + private static void clearParagraphText(List paragraphs) { + paragraphs.forEach((pp) -> { + if (pp.getRuns() != null) { + for (int i = pp.getRuns().size() - 1; i >= 0; --i) { + pp.removeRun(i); + } + } + }); + } + + private Object checkThisTableIsNeedIterator(XWPFTableCell cell, Map map) throws Exception { + String text = cell.getText().trim(); + if (text != null && text.contains("fe:") && text.startsWith("{{")) { + text = text.replace("!fe:", "").replace("$fe:", "").replace("fe:", "").replace("{{", ""); + String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); + Object result = PoiPublicUtil.getParamsValue(keys[0], map); + return Objects.nonNull(result) ? result : new ArrayList(0); + } else { + return null; + } + } + + private void parseThisParagraph(XWPFParagraph paragraph, Map map) throws Exception { + XWPFRun currentRun = null; + String currentText = ""; + Boolean isfinde = false; + List runIndex = new ArrayList(); + for (int i = 0; i < paragraph.getRuns().size(); ++i) { + XWPFRun run = (XWPFRun) paragraph.getRuns().get(i); + String text = run.getText(0); + if (!StringUtils.isEmpty(text)) { + //处理循环机制的{{}} + if (isfinde) { + currentText = currentText + text; + if (currentText.indexOf("{{") == -1) { + isfinde = false; + runIndex.clear(); + } else { + runIndex.add(i); + } + if (currentText.indexOf("}}") != -1) { + this.changeValues(paragraph, currentRun, currentText, runIndex, map); + currentText = ""; + isfinde = false; + } + //处理单个{{}} + } else if (text.indexOf("{{") >= 0) { + currentText = text; + isfinde = true; + currentRun = run; + } else { + currentText = ""; + } + // 真实替换处理单个{{}} + if (currentText.indexOf("}}") != -1) { + this.changeValues(paragraph, currentRun, currentText, runIndex, map); + isfinde = false; + } + } + } + + } + + private void parseThisRow(List cells, Map map) throws Exception { + Iterator var3 = cells.iterator(); + while (var3.hasNext()) { + XWPFTableCell cell = (XWPFTableCell) var3.next(); + this.parseAllParagraph(cell.getParagraphs(), map); + } + + } + + private void parseThisTable(XWPFTable table, Map map) throws Exception { + //默认为当前单元格的长度 + Integer maxExpansionLength = table.getRow(0).getTableCells().size(); +// //预匹配,获取扩展的最大长度 + for (int i = 0; i < table.getNumberOfRows(); ++i) { + XWPFTableRow row = table.getRow(i); + List cells = row.getTableCells(); + maxExpansionLength = checkTableMaxColLength(cells, map, maxExpansionLength); + } + Integer differExpansionLength = maxExpansionLength - table.getRow(0).getTableCells().size(); + //执行匹配,进行行列扩展 + for (int i = 0; i < table.getNumberOfRows(); ++i) { + XWPFTableRow row = table.getRow(i); + List cells = row.getTableCells(); + //增加对该行列的检测 + checkThisTableCellIterator(cells, table, map, i, maxExpansionLength, differExpansionLength); + //检测该行的首个字母是否是 + Object listobj = this.checkThisTableIsNeedIterator((XWPFTableCell) cells.get(0), map); + if (listobj == null) { + this.parseThisRow(cells, map); + } else if (listobj instanceof ExcelListEntity) { + (new ExcelEntityParse()).parseNextRowAndAddRow(table, i, (ExcelListEntity) listobj); + i = i + ((ExcelListEntity) listobj).getList().size() - 1; + } else { + ExcelMapParse.parseNextRowAndAddRow(table, i, (List) listobj); + i = i + ((List) listobj).size() - 1; + } + } + + } + + + public XWPFDocument parseWord(String url, List> list) throws Exception { + if (list != null && list.size() != 0) { + if (list.size() == 1) { + return this.parseWord(url, (Map) list.get(0)); + } else { + MyXWPFDocument doc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(doc, (Map) list.get(0)); + doc.createParagraph().setPageBreak(true); + + for (int i = 1; i < list.size(); ++i) { + MyXWPFDocument tempDoc = WordCache.getXWPFDocument(url); + this.parseWordSetValue(tempDoc, (Map) list.get(i)); + tempDoc.createParagraph().setPageBreak(true); + doc.getDocument().addNewBody().set(tempDoc.getDocument().getBody()); + } + + return doc; + } + } else { + return null; + } + } + + public void parseWord(XWPFDocument document, Map map) throws Exception { + this.parseWordSetValue((MyXWPFDocument) document, map); + } + + /** + * 处理头和尾部脚本的内容替换 + * + * @param doc + * @param map + * @throws Exception + */ + private void parseHeaderAndFoot(MyXWPFDocument doc, Map map) throws Exception { + List headerList = doc.getHeaderList(); + Iterator var4 = headerList.iterator(); + + while (var4.hasNext()) { + XWPFHeader xwpfHeader = (XWPFHeader) var4.next(); + + for (int i = 0; i < xwpfHeader.getListParagraph().size(); ++i) { + this.parseThisParagraph((XWPFParagraph) xwpfHeader.getListParagraph().get(i), map); + } + } + + List footerList = doc.getFooterList(); + Iterator var9 = footerList.iterator(); + + while (var9.hasNext()) { + XWPFFooter xwpfFooter = (XWPFFooter) var9.next(); + + for (int i = 0; i < xwpfFooter.getListParagraph().size(); ++i) { + this.parseThisParagraph((XWPFParagraph) xwpfFooter.getListParagraph().get(i), map); + } + } + + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/plan/IPlanEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/plan/IPlanEquipmentRelationService.java index f043eaf..3fe594e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/plan/IPlanEquipmentRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/plan/IPlanEquipmentRelationService.java @@ -1,5 +1,6 @@ package com.casic.missiles.service.plan; +import com.casic.missiles.dto.board.PlanFinishDTO; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.plan.OrderReceive; import com.casic.missiles.model.plan.PlanEquipmentRelation; @@ -35,4 +36,6 @@ void inspectionStatusUpdate(String executeStatus,Long inspectionId); + List planFinishStatistics(List deptIds); + }