diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 2ab991d..00fe71f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -1,65 +1,476 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.system.SystemFlowForm; +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.IBaseApprovalService; +import com.casic.missiles.service.system.ISystemFlowFormService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.impl.identity.Authentication; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.runtime.ProcessInstanceBuilder; +import org.flowable.engine.task.Comment; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -// todo @Service +@Slf4j +@RequiredArgsConstructor public class BaseApprovalServiceImpl implements IBaseApprovalService { - @Override - public ReturnDTO processSubmit(String formId, Long id) { - return null; + private final ISystemFlowFormService flowFormService; + + private final RuntimeService runtimeService; + + private final TaskService taskService; + + private final HistoryService historyService; + + private final RepositoryService repositoryService; + + private final UserMapper userMapper; + + private final DeptMapper deptMapper; + + private SystemFlowForm getSystemFlowForm(String formId) { + //根据业务表单id获取流程定义 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("form_id", formId); + return flowFormService.getOne(wrapper); + } + + @Transactional + public ReturnDTO processSubmit(String formId, Long id){ + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("该表单不存在对应的流程定义,formId:{}", formId); + return ReturnUtil.failed("流程提交处理失败,该表单不存在对应的流程定义,请重新提交"); + } + //流程发起人 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //根据流程key(SystemFlowForm中的procDefId)获取流程id + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); + if(Objects.isNull(processDefinition)){ + throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); + } + + //流程变量后续根据使用设置 + Map processVariables = new HashMap<>(); +// processVariables.put(FORM_VAR,formData); +// processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); +// processVariables.put(START_USER_INFO, JSONObject.toJSONString(startUserInfo)); + processVariables.put("root", String.valueOf(user.getId())); + + ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); + ProcessInstance processInstance = processInstanceBuilder + .processDefinitionId(processDefinition.getId()) //只能通过id启动,key启动不生效 + .variables(processVariables)//启动流程时设置的全局变量,整个流程实例生效 + .businessStatus(ApprovalStatusEnum.IN_APPROVED)//设置自定义的业务状态 + .businessKey(String.valueOf(id))//关联业务表主键 + .start(); + + if (Objects.isNull(processInstance)) { + log.error("流程实例启动失败,formId:{},deployId:{},procDefId:{}", formId, flowForm.getDeployId(), flowForm.getProcDefId()); + return ReturnUtil.failed("流程提交处理失败,流程实例启动失败"); + } + return ReturnUtil.success(processInstance); } @Override + @Transactional public ReturnDTO agree(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置同意发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //1正常意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "1", request.getComments()); + } + taskService.complete(task.getId()); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO reject(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置驳回发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //3驳回意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "3", request.getComments()); + } + //设置驳回状态为未通过 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED_REJECT); + + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO refuse(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置拒绝发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //2拒绝意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "2", request.getComments()); + } + //设置拒绝状态 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED); + + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "拒绝"); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO revoke(ApprovalRevokeRequest request) { - return null; + String processId = request.getProcessInstanceId(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //只有发起者才能撤回 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .startedBy(String.valueOf(user.getId())) + .or() + .unfinished() //审批中的流程才能撤回 + .processInstanceBusinessStatus(ApprovalStatusEnum.IN_APPROVED) //查询审批中状态 + .endOr() + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + log.error("该用户无审批中的流程,userId:{},processInstanceId:{}", user.getId(), processId); + return ReturnUtil.failed("该用户无审批中的流程"); + } + + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + + + //设置取消状态 + runtimeService.updateBusinessStatus(processId, ApprovalStatusEnum.CANCELED); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO delete(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "删除"); + + return ReturnUtil.success(); + } + + /** + * todo + * @param processId + * @return + */ + @Override + public ReturnDTO delete(String processId) { + runtimeService.deleteProcessInstance(processId, "删除"); + return ReturnUtil.success(); } @Override - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - - } - - @Override + @Transactional public void failUpdate(String processId) { - + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(),processId,"0","提交"); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); } - @Override public List getToBeApprovedList(String formId) { - return null; + //根据业务表单id获取流程定义 + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询待审批的任务,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + JSONObject jsonObject = JSONObject.parseObject(flowForm.getFlowDef()); + JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); + Integer decisionItem = workFlowDef.getInteger("decisionItem"); + + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //根据流程定义、登录用户id获取该业务待办任务 + List tasks = taskService.createTaskQuery() + .processDefinitionKey(flowForm.getProcDefId()) +// .deploymentId(flowForm.getDeployId()) + .taskAssignee(String.valueOf(user.getId())) +// .includeProcessVariables() + .orderByTaskCreateTime().desc() + .list(); + List toBeApprovedDTOs = new ArrayList<>(); + for (Task task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + //任务id,用户进行任务审批使用 + ToBeApprovedDTO toBeApprovedDTO = new ToBeApprovedDTO(); + toBeApprovedDTO.setTaskId(task.getId()); + toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); + toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 + toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTOs.add(toBeApprovedDTO); + } + + //返回任务id和关联业务主键id + return toBeApprovedDTOs; } @Override - public List getApprovedList(String formId) { - return null; + public List getAlreadyApprovalList(String formId) { + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询已审批的流程,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + List historicProcessInstances = new ArrayList<>(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + historicProcessInstances = getApprovedProcessInstancesForAssignee(flowForm, user); + List businessKeys = historicProcessInstances.stream().filter(i-> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); + return businessKeys; } + + private List getApprovedProcessInstancesForAssignee(SystemFlowForm flowForm, AuthUser user) { + List historicProcessInstances = new ArrayList<>(); + //根据流程定义、登录用户id获取该业务流程的实例结束的已办任务(作为审批者) + List tasks = historyService.createHistoricTaskInstanceQuery() + .processDefinitionKey(flowForm.getProcDefId()) + .taskAssignee(String.valueOf(user.getId())) + .finished() //任务已完成 + .orderByTaskCreateTime().desc() + .list(); + //根据作为审批者的任务查询流程实例 + for (HistoricTaskInstance task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .notDeleted() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + historicProcessInstances.add(historicProcessInstance); + } + return historicProcessInstances; + } + + @Override + public List> approvalLog(String processId) { + //一个task只能有一个处理人assignee,可以有多个候选人candidate users + //实际办理人,并行会签时是多个人,串行会签时是一个人,或签时是多个人 + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null + if (StringUtils.isNotBlank(histIns.getTaskId())) { + ApprovalLogResponse flowTask = new ApprovalLogResponse(); + //activityId对应用户任务节点的taskId(ACT_RU_TASK表的TASK_DEF_KEY_,即流程定义中自定义生成的分taskId),用于对审批人按任务节点分组 + flowTask.setTaskId(histIns.getActivityId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + //实际办理人,最后一个节点是应办理人 + if (StringUtils.isNotBlank(histIns.getAssignee())) { + //json转bpmn中assignee是用户id + User user = userMapper.selectById(Long.parseLong(histIns.getAssignee())); + if (!Objects.isNull(user)) { + flowTask.setAssigneeId(user.getId()); + flowTask.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + flowTask.setDeptId(user.getDeptId()); + flowTask.setDeptName(dept.getSimpleName()); + } + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(ApprovalLogResponse.FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); +// 覆盖已有的root,因为驳回会再产生一个发起人任务 + int flag = 0; + ApprovalLogResponse oldValue = null; + if(histIns.getActivityId().contains("root")){ + for (ApprovalLogResponse his : hisFlowList) { + if(his.getTaskId().contains("root")){ + oldValue = his; + flag = 1; + break; + } + } + } + if(flag > 0){ + hisFlowList.remove(oldValue); + } + hisFlowList.add(flowTask); + } + } + Map> resultMap = new HashMap<>(); + //结果按taskId分组,并保证审批顺序 + if (!CollectionUtils.isEmpty(hisFlowList)) { + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + } + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 + Map> finalResultMap = resultMap; + List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { + List approvalLogList = finalResultMap.get(key); + for (ApprovalLogResponse approvalLog : approvalLogList) { + if (approvalLog.getTaskId().contains("root")) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + User user = userMapper.selectById(Long.valueOf(startUserId)); + approvalLog.setApprovalStatus(approvalLog.getTaskName());//发起人 + if(!Objects.isNull(user)){ + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } else if (Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批中"); + } else if (!Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 + } + } + resultList.add(approvalLogList); + } + + return resultList; + } + + + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 2ab991d..00fe71f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -1,65 +1,476 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.system.SystemFlowForm; +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.IBaseApprovalService; +import com.casic.missiles.service.system.ISystemFlowFormService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.impl.identity.Authentication; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.runtime.ProcessInstanceBuilder; +import org.flowable.engine.task.Comment; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -// todo @Service +@Slf4j +@RequiredArgsConstructor public class BaseApprovalServiceImpl implements IBaseApprovalService { - @Override - public ReturnDTO processSubmit(String formId, Long id) { - return null; + private final ISystemFlowFormService flowFormService; + + private final RuntimeService runtimeService; + + private final TaskService taskService; + + private final HistoryService historyService; + + private final RepositoryService repositoryService; + + private final UserMapper userMapper; + + private final DeptMapper deptMapper; + + private SystemFlowForm getSystemFlowForm(String formId) { + //根据业务表单id获取流程定义 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("form_id", formId); + return flowFormService.getOne(wrapper); + } + + @Transactional + public ReturnDTO processSubmit(String formId, Long id){ + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("该表单不存在对应的流程定义,formId:{}", formId); + return ReturnUtil.failed("流程提交处理失败,该表单不存在对应的流程定义,请重新提交"); + } + //流程发起人 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //根据流程key(SystemFlowForm中的procDefId)获取流程id + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); + if(Objects.isNull(processDefinition)){ + throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); + } + + //流程变量后续根据使用设置 + Map processVariables = new HashMap<>(); +// processVariables.put(FORM_VAR,formData); +// processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); +// processVariables.put(START_USER_INFO, JSONObject.toJSONString(startUserInfo)); + processVariables.put("root", String.valueOf(user.getId())); + + ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); + ProcessInstance processInstance = processInstanceBuilder + .processDefinitionId(processDefinition.getId()) //只能通过id启动,key启动不生效 + .variables(processVariables)//启动流程时设置的全局变量,整个流程实例生效 + .businessStatus(ApprovalStatusEnum.IN_APPROVED)//设置自定义的业务状态 + .businessKey(String.valueOf(id))//关联业务表主键 + .start(); + + if (Objects.isNull(processInstance)) { + log.error("流程实例启动失败,formId:{},deployId:{},procDefId:{}", formId, flowForm.getDeployId(), flowForm.getProcDefId()); + return ReturnUtil.failed("流程提交处理失败,流程实例启动失败"); + } + return ReturnUtil.success(processInstance); } @Override + @Transactional public ReturnDTO agree(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置同意发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //1正常意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "1", request.getComments()); + } + taskService.complete(task.getId()); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO reject(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置驳回发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //3驳回意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "3", request.getComments()); + } + //设置驳回状态为未通过 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED_REJECT); + + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO refuse(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置拒绝发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //2拒绝意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "2", request.getComments()); + } + //设置拒绝状态 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED); + + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "拒绝"); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO revoke(ApprovalRevokeRequest request) { - return null; + String processId = request.getProcessInstanceId(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //只有发起者才能撤回 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .startedBy(String.valueOf(user.getId())) + .or() + .unfinished() //审批中的流程才能撤回 + .processInstanceBusinessStatus(ApprovalStatusEnum.IN_APPROVED) //查询审批中状态 + .endOr() + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + log.error("该用户无审批中的流程,userId:{},processInstanceId:{}", user.getId(), processId); + return ReturnUtil.failed("该用户无审批中的流程"); + } + + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + + + //设置取消状态 + runtimeService.updateBusinessStatus(processId, ApprovalStatusEnum.CANCELED); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO delete(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "删除"); + + return ReturnUtil.success(); + } + + /** + * todo + * @param processId + * @return + */ + @Override + public ReturnDTO delete(String processId) { + runtimeService.deleteProcessInstance(processId, "删除"); + return ReturnUtil.success(); } @Override - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - - } - - @Override + @Transactional public void failUpdate(String processId) { - + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(),processId,"0","提交"); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); } - @Override public List getToBeApprovedList(String formId) { - return null; + //根据业务表单id获取流程定义 + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询待审批的任务,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + JSONObject jsonObject = JSONObject.parseObject(flowForm.getFlowDef()); + JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); + Integer decisionItem = workFlowDef.getInteger("decisionItem"); + + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //根据流程定义、登录用户id获取该业务待办任务 + List tasks = taskService.createTaskQuery() + .processDefinitionKey(flowForm.getProcDefId()) +// .deploymentId(flowForm.getDeployId()) + .taskAssignee(String.valueOf(user.getId())) +// .includeProcessVariables() + .orderByTaskCreateTime().desc() + .list(); + List toBeApprovedDTOs = new ArrayList<>(); + for (Task task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + //任务id,用户进行任务审批使用 + ToBeApprovedDTO toBeApprovedDTO = new ToBeApprovedDTO(); + toBeApprovedDTO.setTaskId(task.getId()); + toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); + toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 + toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTOs.add(toBeApprovedDTO); + } + + //返回任务id和关联业务主键id + return toBeApprovedDTOs; } @Override - public List getApprovedList(String formId) { - return null; + public List getAlreadyApprovalList(String formId) { + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询已审批的流程,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + List historicProcessInstances = new ArrayList<>(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + historicProcessInstances = getApprovedProcessInstancesForAssignee(flowForm, user); + List businessKeys = historicProcessInstances.stream().filter(i-> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); + return businessKeys; } + + private List getApprovedProcessInstancesForAssignee(SystemFlowForm flowForm, AuthUser user) { + List historicProcessInstances = new ArrayList<>(); + //根据流程定义、登录用户id获取该业务流程的实例结束的已办任务(作为审批者) + List tasks = historyService.createHistoricTaskInstanceQuery() + .processDefinitionKey(flowForm.getProcDefId()) + .taskAssignee(String.valueOf(user.getId())) + .finished() //任务已完成 + .orderByTaskCreateTime().desc() + .list(); + //根据作为审批者的任务查询流程实例 + for (HistoricTaskInstance task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .notDeleted() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + historicProcessInstances.add(historicProcessInstance); + } + return historicProcessInstances; + } + + @Override + public List> approvalLog(String processId) { + //一个task只能有一个处理人assignee,可以有多个候选人candidate users + //实际办理人,并行会签时是多个人,串行会签时是一个人,或签时是多个人 + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null + if (StringUtils.isNotBlank(histIns.getTaskId())) { + ApprovalLogResponse flowTask = new ApprovalLogResponse(); + //activityId对应用户任务节点的taskId(ACT_RU_TASK表的TASK_DEF_KEY_,即流程定义中自定义生成的分taskId),用于对审批人按任务节点分组 + flowTask.setTaskId(histIns.getActivityId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + //实际办理人,最后一个节点是应办理人 + if (StringUtils.isNotBlank(histIns.getAssignee())) { + //json转bpmn中assignee是用户id + User user = userMapper.selectById(Long.parseLong(histIns.getAssignee())); + if (!Objects.isNull(user)) { + flowTask.setAssigneeId(user.getId()); + flowTask.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + flowTask.setDeptId(user.getDeptId()); + flowTask.setDeptName(dept.getSimpleName()); + } + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(ApprovalLogResponse.FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); +// 覆盖已有的root,因为驳回会再产生一个发起人任务 + int flag = 0; + ApprovalLogResponse oldValue = null; + if(histIns.getActivityId().contains("root")){ + for (ApprovalLogResponse his : hisFlowList) { + if(his.getTaskId().contains("root")){ + oldValue = his; + flag = 1; + break; + } + } + } + if(flag > 0){ + hisFlowList.remove(oldValue); + } + hisFlowList.add(flowTask); + } + } + Map> resultMap = new HashMap<>(); + //结果按taskId分组,并保证审批顺序 + if (!CollectionUtils.isEmpty(hisFlowList)) { + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + } + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 + Map> finalResultMap = resultMap; + List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { + List approvalLogList = finalResultMap.get(key); + for (ApprovalLogResponse approvalLog : approvalLogList) { + if (approvalLog.getTaskId().contains("root")) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + User user = userMapper.selectById(Long.valueOf(startUserId)); + approvalLog.setApprovalStatus(approvalLog.getTaskName());//发起人 + if(!Objects.isNull(user)){ + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } else if (Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批中"); + } else if (!Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 + } + } + resultList.add(approvalLogList); + } + + return resultList; + } + + + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java index 8d45b5b..8b82fe7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,12 +10,17 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.mapper.equipment.EquipmentGroupInfoMapper; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import com.casic.missiles.service.equipment.IEquipmentGroupRelationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 受检设备-设备分组信息表 服务实现类 @@ -84,6 +90,26 @@ EquipmentGroupInfo groupInfo = this.getById(groupId); groupForm.setGroupInfo(groupInfo); - return null; + List relations = groupRelationService.listByGroup(groupId); + groupForm.setEquipmentList(relations); + + return groupForm; + } + + @Override + public List selectByEquipment(Long equipmentId) { + String existSql = String.format("(select id from eqpt_equipment_group_relation r where r.group_id = eqpt_equipment_group_info.id and r.equipment_id = %d)",equipmentId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.exists(existSql); + return this.list(queryWrapper); + +// List list = groupRelationService.listByEquipment(equipmentId); +// if(ObjectUtil.isNotEmpty(list)){ +// List groupIds = list.stream().map(EquipmentGroupRelation::getGroupId).distinct().collect(Collectors.toList()); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",groupIds); +// return this.list(queryWrapper); +// } +// return new ArrayList<>(); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 2ab991d..00fe71f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -1,65 +1,476 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.system.SystemFlowForm; +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.IBaseApprovalService; +import com.casic.missiles.service.system.ISystemFlowFormService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.impl.identity.Authentication; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.runtime.ProcessInstanceBuilder; +import org.flowable.engine.task.Comment; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -// todo @Service +@Slf4j +@RequiredArgsConstructor public class BaseApprovalServiceImpl implements IBaseApprovalService { - @Override - public ReturnDTO processSubmit(String formId, Long id) { - return null; + private final ISystemFlowFormService flowFormService; + + private final RuntimeService runtimeService; + + private final TaskService taskService; + + private final HistoryService historyService; + + private final RepositoryService repositoryService; + + private final UserMapper userMapper; + + private final DeptMapper deptMapper; + + private SystemFlowForm getSystemFlowForm(String formId) { + //根据业务表单id获取流程定义 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("form_id", formId); + return flowFormService.getOne(wrapper); + } + + @Transactional + public ReturnDTO processSubmit(String formId, Long id){ + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("该表单不存在对应的流程定义,formId:{}", formId); + return ReturnUtil.failed("流程提交处理失败,该表单不存在对应的流程定义,请重新提交"); + } + //流程发起人 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //根据流程key(SystemFlowForm中的procDefId)获取流程id + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); + if(Objects.isNull(processDefinition)){ + throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); + } + + //流程变量后续根据使用设置 + Map processVariables = new HashMap<>(); +// processVariables.put(FORM_VAR,formData); +// processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); +// processVariables.put(START_USER_INFO, JSONObject.toJSONString(startUserInfo)); + processVariables.put("root", String.valueOf(user.getId())); + + ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); + ProcessInstance processInstance = processInstanceBuilder + .processDefinitionId(processDefinition.getId()) //只能通过id启动,key启动不生效 + .variables(processVariables)//启动流程时设置的全局变量,整个流程实例生效 + .businessStatus(ApprovalStatusEnum.IN_APPROVED)//设置自定义的业务状态 + .businessKey(String.valueOf(id))//关联业务表主键 + .start(); + + if (Objects.isNull(processInstance)) { + log.error("流程实例启动失败,formId:{},deployId:{},procDefId:{}", formId, flowForm.getDeployId(), flowForm.getProcDefId()); + return ReturnUtil.failed("流程提交处理失败,流程实例启动失败"); + } + return ReturnUtil.success(processInstance); } @Override + @Transactional public ReturnDTO agree(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置同意发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //1正常意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "1", request.getComments()); + } + taskService.complete(task.getId()); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO reject(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置驳回发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //3驳回意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "3", request.getComments()); + } + //设置驳回状态为未通过 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED_REJECT); + + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO refuse(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置拒绝发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //2拒绝意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "2", request.getComments()); + } + //设置拒绝状态 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED); + + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "拒绝"); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO revoke(ApprovalRevokeRequest request) { - return null; + String processId = request.getProcessInstanceId(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //只有发起者才能撤回 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .startedBy(String.valueOf(user.getId())) + .or() + .unfinished() //审批中的流程才能撤回 + .processInstanceBusinessStatus(ApprovalStatusEnum.IN_APPROVED) //查询审批中状态 + .endOr() + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + log.error("该用户无审批中的流程,userId:{},processInstanceId:{}", user.getId(), processId); + return ReturnUtil.failed("该用户无审批中的流程"); + } + + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + + + //设置取消状态 + runtimeService.updateBusinessStatus(processId, ApprovalStatusEnum.CANCELED); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO delete(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "删除"); + + return ReturnUtil.success(); + } + + /** + * todo + * @param processId + * @return + */ + @Override + public ReturnDTO delete(String processId) { + runtimeService.deleteProcessInstance(processId, "删除"); + return ReturnUtil.success(); } @Override - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - - } - - @Override + @Transactional public void failUpdate(String processId) { - + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(),processId,"0","提交"); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); } - @Override public List getToBeApprovedList(String formId) { - return null; + //根据业务表单id获取流程定义 + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询待审批的任务,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + JSONObject jsonObject = JSONObject.parseObject(flowForm.getFlowDef()); + JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); + Integer decisionItem = workFlowDef.getInteger("decisionItem"); + + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //根据流程定义、登录用户id获取该业务待办任务 + List tasks = taskService.createTaskQuery() + .processDefinitionKey(flowForm.getProcDefId()) +// .deploymentId(flowForm.getDeployId()) + .taskAssignee(String.valueOf(user.getId())) +// .includeProcessVariables() + .orderByTaskCreateTime().desc() + .list(); + List toBeApprovedDTOs = new ArrayList<>(); + for (Task task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + //任务id,用户进行任务审批使用 + ToBeApprovedDTO toBeApprovedDTO = new ToBeApprovedDTO(); + toBeApprovedDTO.setTaskId(task.getId()); + toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); + toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 + toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTOs.add(toBeApprovedDTO); + } + + //返回任务id和关联业务主键id + return toBeApprovedDTOs; } @Override - public List getApprovedList(String formId) { - return null; + public List getAlreadyApprovalList(String formId) { + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询已审批的流程,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + List historicProcessInstances = new ArrayList<>(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + historicProcessInstances = getApprovedProcessInstancesForAssignee(flowForm, user); + List businessKeys = historicProcessInstances.stream().filter(i-> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); + return businessKeys; } + + private List getApprovedProcessInstancesForAssignee(SystemFlowForm flowForm, AuthUser user) { + List historicProcessInstances = new ArrayList<>(); + //根据流程定义、登录用户id获取该业务流程的实例结束的已办任务(作为审批者) + List tasks = historyService.createHistoricTaskInstanceQuery() + .processDefinitionKey(flowForm.getProcDefId()) + .taskAssignee(String.valueOf(user.getId())) + .finished() //任务已完成 + .orderByTaskCreateTime().desc() + .list(); + //根据作为审批者的任务查询流程实例 + for (HistoricTaskInstance task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .notDeleted() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + historicProcessInstances.add(historicProcessInstance); + } + return historicProcessInstances; + } + + @Override + public List> approvalLog(String processId) { + //一个task只能有一个处理人assignee,可以有多个候选人candidate users + //实际办理人,并行会签时是多个人,串行会签时是一个人,或签时是多个人 + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null + if (StringUtils.isNotBlank(histIns.getTaskId())) { + ApprovalLogResponse flowTask = new ApprovalLogResponse(); + //activityId对应用户任务节点的taskId(ACT_RU_TASK表的TASK_DEF_KEY_,即流程定义中自定义生成的分taskId),用于对审批人按任务节点分组 + flowTask.setTaskId(histIns.getActivityId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + //实际办理人,最后一个节点是应办理人 + if (StringUtils.isNotBlank(histIns.getAssignee())) { + //json转bpmn中assignee是用户id + User user = userMapper.selectById(Long.parseLong(histIns.getAssignee())); + if (!Objects.isNull(user)) { + flowTask.setAssigneeId(user.getId()); + flowTask.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + flowTask.setDeptId(user.getDeptId()); + flowTask.setDeptName(dept.getSimpleName()); + } + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(ApprovalLogResponse.FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); +// 覆盖已有的root,因为驳回会再产生一个发起人任务 + int flag = 0; + ApprovalLogResponse oldValue = null; + if(histIns.getActivityId().contains("root")){ + for (ApprovalLogResponse his : hisFlowList) { + if(his.getTaskId().contains("root")){ + oldValue = his; + flag = 1; + break; + } + } + } + if(flag > 0){ + hisFlowList.remove(oldValue); + } + hisFlowList.add(flowTask); + } + } + Map> resultMap = new HashMap<>(); + //结果按taskId分组,并保证审批顺序 + if (!CollectionUtils.isEmpty(hisFlowList)) { + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + } + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 + Map> finalResultMap = resultMap; + List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { + List approvalLogList = finalResultMap.get(key); + for (ApprovalLogResponse approvalLog : approvalLogList) { + if (approvalLog.getTaskId().contains("root")) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + User user = userMapper.selectById(Long.valueOf(startUserId)); + approvalLog.setApprovalStatus(approvalLog.getTaskName());//发起人 + if(!Objects.isNull(user)){ + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } else if (Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批中"); + } else if (!Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 + } + } + resultList.add(approvalLogList); + } + + return resultList; + } + + + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java index 8d45b5b..8b82fe7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,12 +10,17 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.mapper.equipment.EquipmentGroupInfoMapper; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import com.casic.missiles.service.equipment.IEquipmentGroupRelationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 受检设备-设备分组信息表 服务实现类 @@ -84,6 +90,26 @@ EquipmentGroupInfo groupInfo = this.getById(groupId); groupForm.setGroupInfo(groupInfo); - return null; + List relations = groupRelationService.listByGroup(groupId); + groupForm.setEquipmentList(relations); + + return groupForm; + } + + @Override + public List selectByEquipment(Long equipmentId) { + String existSql = String.format("(select id from eqpt_equipment_group_relation r where r.group_id = eqpt_equipment_group_info.id and r.equipment_id = %d)",equipmentId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.exists(existSql); + return this.list(queryWrapper); + +// List list = groupRelationService.listByEquipment(equipmentId); +// if(ObjectUtil.isNotEmpty(list)){ +// List groupIds = list.stream().map(EquipmentGroupRelation::getGroupId).distinct().collect(Collectors.toList()); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",groupIds); +// return this.list(queryWrapper); +// } +// return new ArrayList<>(); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java index 6072bea..03d5cab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java @@ -29,6 +29,20 @@ @Override public List listByGroup(Long groupId) { - return null; + return this.baseMapper.listByGroup(groupId); + } + + @Override + public boolean deleteByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.remove(queryWrapper); + } + + @Override + public List listByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.list(queryWrapper); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 2ab991d..00fe71f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -1,65 +1,476 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.system.SystemFlowForm; +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.IBaseApprovalService; +import com.casic.missiles.service.system.ISystemFlowFormService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.impl.identity.Authentication; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.runtime.ProcessInstanceBuilder; +import org.flowable.engine.task.Comment; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -// todo @Service +@Slf4j +@RequiredArgsConstructor public class BaseApprovalServiceImpl implements IBaseApprovalService { - @Override - public ReturnDTO processSubmit(String formId, Long id) { - return null; + private final ISystemFlowFormService flowFormService; + + private final RuntimeService runtimeService; + + private final TaskService taskService; + + private final HistoryService historyService; + + private final RepositoryService repositoryService; + + private final UserMapper userMapper; + + private final DeptMapper deptMapper; + + private SystemFlowForm getSystemFlowForm(String formId) { + //根据业务表单id获取流程定义 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("form_id", formId); + return flowFormService.getOne(wrapper); + } + + @Transactional + public ReturnDTO processSubmit(String formId, Long id){ + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("该表单不存在对应的流程定义,formId:{}", formId); + return ReturnUtil.failed("流程提交处理失败,该表单不存在对应的流程定义,请重新提交"); + } + //流程发起人 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //根据流程key(SystemFlowForm中的procDefId)获取流程id + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); + if(Objects.isNull(processDefinition)){ + throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); + } + + //流程变量后续根据使用设置 + Map processVariables = new HashMap<>(); +// processVariables.put(FORM_VAR,formData); +// processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); +// processVariables.put(START_USER_INFO, JSONObject.toJSONString(startUserInfo)); + processVariables.put("root", String.valueOf(user.getId())); + + ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); + ProcessInstance processInstance = processInstanceBuilder + .processDefinitionId(processDefinition.getId()) //只能通过id启动,key启动不生效 + .variables(processVariables)//启动流程时设置的全局变量,整个流程实例生效 + .businessStatus(ApprovalStatusEnum.IN_APPROVED)//设置自定义的业务状态 + .businessKey(String.valueOf(id))//关联业务表主键 + .start(); + + if (Objects.isNull(processInstance)) { + log.error("流程实例启动失败,formId:{},deployId:{},procDefId:{}", formId, flowForm.getDeployId(), flowForm.getProcDefId()); + return ReturnUtil.failed("流程提交处理失败,流程实例启动失败"); + } + return ReturnUtil.success(processInstance); } @Override + @Transactional public ReturnDTO agree(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置同意发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //1正常意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "1", request.getComments()); + } + taskService.complete(task.getId()); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO reject(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置驳回发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //3驳回意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "3", request.getComments()); + } + //设置驳回状态为未通过 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED_REJECT); + + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO refuse(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置拒绝发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //2拒绝意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "2", request.getComments()); + } + //设置拒绝状态 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED); + + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "拒绝"); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO revoke(ApprovalRevokeRequest request) { - return null; + String processId = request.getProcessInstanceId(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //只有发起者才能撤回 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .startedBy(String.valueOf(user.getId())) + .or() + .unfinished() //审批中的流程才能撤回 + .processInstanceBusinessStatus(ApprovalStatusEnum.IN_APPROVED) //查询审批中状态 + .endOr() + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + log.error("该用户无审批中的流程,userId:{},processInstanceId:{}", user.getId(), processId); + return ReturnUtil.failed("该用户无审批中的流程"); + } + + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + + + //设置取消状态 + runtimeService.updateBusinessStatus(processId, ApprovalStatusEnum.CANCELED); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO delete(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "删除"); + + return ReturnUtil.success(); + } + + /** + * todo + * @param processId + * @return + */ + @Override + public ReturnDTO delete(String processId) { + runtimeService.deleteProcessInstance(processId, "删除"); + return ReturnUtil.success(); } @Override - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - - } - - @Override + @Transactional public void failUpdate(String processId) { - + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(),processId,"0","提交"); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); } - @Override public List getToBeApprovedList(String formId) { - return null; + //根据业务表单id获取流程定义 + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询待审批的任务,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + JSONObject jsonObject = JSONObject.parseObject(flowForm.getFlowDef()); + JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); + Integer decisionItem = workFlowDef.getInteger("decisionItem"); + + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //根据流程定义、登录用户id获取该业务待办任务 + List tasks = taskService.createTaskQuery() + .processDefinitionKey(flowForm.getProcDefId()) +// .deploymentId(flowForm.getDeployId()) + .taskAssignee(String.valueOf(user.getId())) +// .includeProcessVariables() + .orderByTaskCreateTime().desc() + .list(); + List toBeApprovedDTOs = new ArrayList<>(); + for (Task task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + //任务id,用户进行任务审批使用 + ToBeApprovedDTO toBeApprovedDTO = new ToBeApprovedDTO(); + toBeApprovedDTO.setTaskId(task.getId()); + toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); + toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 + toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTOs.add(toBeApprovedDTO); + } + + //返回任务id和关联业务主键id + return toBeApprovedDTOs; } @Override - public List getApprovedList(String formId) { - return null; + public List getAlreadyApprovalList(String formId) { + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询已审批的流程,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + List historicProcessInstances = new ArrayList<>(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + historicProcessInstances = getApprovedProcessInstancesForAssignee(flowForm, user); + List businessKeys = historicProcessInstances.stream().filter(i-> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); + return businessKeys; } + + private List getApprovedProcessInstancesForAssignee(SystemFlowForm flowForm, AuthUser user) { + List historicProcessInstances = new ArrayList<>(); + //根据流程定义、登录用户id获取该业务流程的实例结束的已办任务(作为审批者) + List tasks = historyService.createHistoricTaskInstanceQuery() + .processDefinitionKey(flowForm.getProcDefId()) + .taskAssignee(String.valueOf(user.getId())) + .finished() //任务已完成 + .orderByTaskCreateTime().desc() + .list(); + //根据作为审批者的任务查询流程实例 + for (HistoricTaskInstance task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .notDeleted() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + historicProcessInstances.add(historicProcessInstance); + } + return historicProcessInstances; + } + + @Override + public List> approvalLog(String processId) { + //一个task只能有一个处理人assignee,可以有多个候选人candidate users + //实际办理人,并行会签时是多个人,串行会签时是一个人,或签时是多个人 + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null + if (StringUtils.isNotBlank(histIns.getTaskId())) { + ApprovalLogResponse flowTask = new ApprovalLogResponse(); + //activityId对应用户任务节点的taskId(ACT_RU_TASK表的TASK_DEF_KEY_,即流程定义中自定义生成的分taskId),用于对审批人按任务节点分组 + flowTask.setTaskId(histIns.getActivityId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + //实际办理人,最后一个节点是应办理人 + if (StringUtils.isNotBlank(histIns.getAssignee())) { + //json转bpmn中assignee是用户id + User user = userMapper.selectById(Long.parseLong(histIns.getAssignee())); + if (!Objects.isNull(user)) { + flowTask.setAssigneeId(user.getId()); + flowTask.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + flowTask.setDeptId(user.getDeptId()); + flowTask.setDeptName(dept.getSimpleName()); + } + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(ApprovalLogResponse.FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); +// 覆盖已有的root,因为驳回会再产生一个发起人任务 + int flag = 0; + ApprovalLogResponse oldValue = null; + if(histIns.getActivityId().contains("root")){ + for (ApprovalLogResponse his : hisFlowList) { + if(his.getTaskId().contains("root")){ + oldValue = his; + flag = 1; + break; + } + } + } + if(flag > 0){ + hisFlowList.remove(oldValue); + } + hisFlowList.add(flowTask); + } + } + Map> resultMap = new HashMap<>(); + //结果按taskId分组,并保证审批顺序 + if (!CollectionUtils.isEmpty(hisFlowList)) { + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + } + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 + Map> finalResultMap = resultMap; + List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { + List approvalLogList = finalResultMap.get(key); + for (ApprovalLogResponse approvalLog : approvalLogList) { + if (approvalLog.getTaskId().contains("root")) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + User user = userMapper.selectById(Long.valueOf(startUserId)); + approvalLog.setApprovalStatus(approvalLog.getTaskName());//发起人 + if(!Objects.isNull(user)){ + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } else if (Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批中"); + } else if (!Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 + } + } + resultList.add(approvalLogList); + } + + return resultList; + } + + + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java index 8d45b5b..8b82fe7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,12 +10,17 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.mapper.equipment.EquipmentGroupInfoMapper; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import com.casic.missiles.service.equipment.IEquipmentGroupRelationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 受检设备-设备分组信息表 服务实现类 @@ -84,6 +90,26 @@ EquipmentGroupInfo groupInfo = this.getById(groupId); groupForm.setGroupInfo(groupInfo); - return null; + List relations = groupRelationService.listByGroup(groupId); + groupForm.setEquipmentList(relations); + + return groupForm; + } + + @Override + public List selectByEquipment(Long equipmentId) { + String existSql = String.format("(select id from eqpt_equipment_group_relation r where r.group_id = eqpt_equipment_group_info.id and r.equipment_id = %d)",equipmentId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.exists(existSql); + return this.list(queryWrapper); + +// List list = groupRelationService.listByEquipment(equipmentId); +// if(ObjectUtil.isNotEmpty(list)){ +// List groupIds = list.stream().map(EquipmentGroupRelation::getGroupId).distinct().collect(Collectors.toList()); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",groupIds); +// return this.list(queryWrapper); +// } +// return new ArrayList<>(); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java index 6072bea..03d5cab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java @@ -29,6 +29,20 @@ @Override public List listByGroup(Long groupId) { - return null; + return this.baseMapper.listByGroup(groupId); + } + + @Override + public boolean deleteByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.remove(queryWrapper); + } + + @Override + public List listByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.list(queryWrapper); } } 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 7dc3868..198f524 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 @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -15,14 +16,13 @@ import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.mapper.equipment.EquipmentInfoApprovalMapper; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; -import com.casic.missiles.service.equipment.IEquipmentAttachmentService; -import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -31,10 +31,14 @@ import java.io.Serializable; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; + +import static com.casic.missiles.enums.ApprovalTypeEnum.*; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-审批记录表 服务实现类 @@ -47,9 +51,10 @@ @RequiredArgsConstructor public class EquipmentInfoApprovalServiceImpl extends ServiceImpl implements IEquipmentInfoApprovalService { + private final IEquipmentInfoService equipmentInfoService; private final IEquipmentAttachmentService attachmentService; private final IEquipmentTechnicalTargetService technicalTargetService; - + private final IEquipmentGroupInfoService groupInfoService; private final IBaseApprovalService baseApprovalService; @Override @@ -57,7 +62,7 @@ public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { // todo 删除申请,需要把设备信息回填? // 0. 生成设备id - if (ObjectUtil.isNotEmpty(approvalForm.getEquipmentId())) { + if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); } // 1. 生成统一编号 @@ -75,23 +80,11 @@ if (CollUtil.isNotEmpty(approvalForm.getAttachments())) { attachmentService.saveByEquipment(approvalForm.getEquipmentId(), approvalForm.getAttachments()); } - // 4. 删除旧流程(已取消后再次编辑) todo 改了!! - if (StrUtil.isNotEmpty(approvalForm.getProcessId())) { -// this.deleteProcessInstance(approvalForm.getProcessId()); -// approvalForm.setProcessId(null); - } this.saveOrUpdate(approvalForm); // 4. 返回申请记录id return approvalForm.getId(); } - private void deleteProcessInstance(String processId) { - if (StrUtil.isNotEmpty(processId)) { - // todo 去除魔法值 - baseApprovalService.deleteProcessInstance(processId, "删除"); - } - } - private void resetProcessInstance(String processId) { // todo 重置流程 } @@ -102,7 +95,9 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); attachmentService.removeByEquipment(approvalInfo.getEquipmentId()); technicalTargetService.removeByEquipment(approvalInfo.getEquipmentId()); - this.deleteProcessInstance(approvalInfo.getProcessId()); + if (StrUtil.isNotEmpty(approvalInfo.getProcessId())) { + baseApprovalService.delete(approvalInfo.getProcessId()); + } this.removeById(approvalId); } @@ -117,7 +112,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - resetProcessInstance(approvalInfo.getProcessId()); + baseApprovalService.failUpdate(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -149,7 +144,7 @@ @Override public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { - ReturnDTO res = baseApprovalService.refuse(refuseRequest); + ReturnDTO res = baseApprovalService.reject(refuseRequest); if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { return res; } @@ -157,16 +152,47 @@ } @Override + @Transactional + public void finishApproval(Long approvalId) { + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); + this.updateById(approvalInfo); + if(ObjectUtil.isEmpty(approvalInfo)){ + return; + } + switch (approvalInfo.getApprovalType()){ + case ADD: + case UPDATE: + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(approvalInfo,equipmentInfo); + equipmentInfo.setId(approvalInfo.getEquipmentId()); + equipmentInfoService.saveOrUpdate(equipmentInfo); + break; + case DELETE: + equipmentInfoService.removeById(approvalInfo.getEquipmentId()); + break; + default: + break; + } + } + + @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); - info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + if(ObjectUtil.isNotEmpty(info)){ + info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); + info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); + } return info; } @Override public Page listPage(Page page, String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + if(StrUtil.isNotEmpty(approvalStatus)){ + queryWrapper.eq("approval_status",approvalStatus); + } return this.page(page, queryWrapper); } @@ -184,12 +210,21 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - return this.page(page, queryWrapper); + page = this.page(page,queryWrapper); + for (EquipmentInfoApproval approval : page.getRecords()) { + Optional toBeApprovedOpt = toBeApprovedList.stream().filter(i->i.getBusinessKey().equals(approval.getId().toString())).findAny(); + if(toBeApprovedOpt.isPresent()){ + ToBeApprovedDTO toBeApprovedDTO = toBeApprovedOpt.get(); + approval.setTaskId(toBeApprovedDTO.getTaskId()); + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + } + return page; } @Override public Page approvedListPage(Page page, String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { - List approvedIds = baseApprovalService.getApprovedList(formId); + List approvedIds = baseApprovalService.getAlreadyApprovalList(formId); if (CollUtil.isEmpty(approvedIds)) { return page; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java index 8c80d0a..d6c2a4e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -34,7 +34,7 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("计量综合管理系统")//文档说明 + .title("受检设备管理系统")//文档说明 .version("1.0.0")//文档版本说明 .build(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 3d4bc3e..5667dea 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java @@ -16,10 +16,16 @@ @Getter public enum SwaggerEntity { -// /** 系统管理模块 */ -// SYSTEM("系统管理模块", -// basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), -// PathSelectors.any()), + /** 系统管理模块 */ + SYSTEM("系统管理模块", + basePackage("com.casic.missiles.controller.sys", "com.casic.missiles.controller.system"), + PathSelectors.any()), + + + /** 设备台账模块 */ + EQUIPMENT("设备台账模块", + basePackage("com.casic.missiles.controller.equipment"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java new file mode 100644 index 0000000..eeb2d82 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalTypeEnum.java @@ -0,0 +1,15 @@ +package com.casic.missiles.enums; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/7/21 17:14 + */ +public interface ApprovalTypeEnum { + //新增 + int ADD = 1; + //编辑 + int UPDATE = 2; + //删除 + int DELETE = 3; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java index 79a9c26..cef615c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/system/ApplyFromIdEnum.java @@ -4,7 +4,7 @@ /** * 设备与装置 */ - EQUIPMENT_APPROVAL("sbyzzsbtzsp", "2", "设备台账审批"), + EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java index 52b8d7a..83dac20 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentGroupRelationMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,6 +16,6 @@ */ public interface EquipmentGroupRelationMapper extends BaseMapper { - List listByGroup(Long groupId); + List listByGroup(@Param("groupId") Long groupId); } diff --git a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml index 9f8a65b..852b4dc 100644 --- a/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/equipment/EquipmentGroupRelationMapper.xml @@ -16,8 +16,26 @@ id, group_id, equipment_id, create_time, update_time - + SELECT + r.id as id, + r.group_id as groupId, + r.equipment_id as equipmentId, + r.create_time as createTime, + r.update_time as updateTime, + e.equipment_no as equipmentNo, + e.equipment_name as equipmentName, + e.model as model, + e.director_name as directorName, + e.meter_identify as meterIdentify, + e.certificate_valid as certificateValid, + e.install_location as installLocation, + e.install_location_ext as installLocationExt + FROM + eqpt_equipment_group_relation r + LEFT JOIN eqpt_equipment_info e ON r.equipment_id = e.id + WHERE + r.group_id = #{groupId} diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java index aedf6d7..062693e 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/CasicApiApplication.java @@ -28,6 +28,10 @@ @ServletComponentScan @MapperScan("com.casic.missiles.mapper") public class CasicApiApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } public static void main(String[] args) { SpringApplication.run(CasicApiApplication.class, args); log.info("CasicApiApplication is success!"); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java index ecc74ba..aa3baae 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; @@ -12,6 +13,8 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -76,36 +79,72 @@ @ApiOperation("查看审批-基本信息") @GetMapping("/approval/detail") @ResponseBody - public ReturnDTO approvalDetail(Long id) { + public ReturnDTO approvalDetail(Long id) { EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); return ReturnUtil.success(info); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") @GetMapping("/approval/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { Page page = PageFactory.defaultPage(); page = approvalService.listPage(page, equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd, approvalStatus); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-待审批") @GetMapping("/approval/toApprovalListPage") @ResponseBody - public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> toApprovalListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.toApprovalListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId",dataType = "String", paramType = "query") + }) @ApiOperation("审批列表-已审批") @GetMapping("/approval/approvedListPage") @ResponseBody - public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd, String formId) { + public ReturnDTO> approvedListPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, + String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId) { Page page = PageFactory.defaultPage(); page = approvalService.approvedListPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd, formId); return ReturnUtil.success(super.packForBT(page)); diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java index ff2422d..c69cc82 100644 --- a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentGroupController.java @@ -1,15 +1,24 @@ package com.casic.missiles.controller.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import io.swagger.annotations.Api; +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.springframework.web.bind.annotation.*; +import java.util.List; + /** *

* 受检设备-设备分组信息表 前端控制器 @@ -23,15 +32,52 @@ @RestController @RequestMapping("/equipment/group") @RequiredArgsConstructor -public class EquipmentGroupController { +public class EquipmentGroupController extends BaseController { private final IEquipmentGroupInfoService groupInfoService; + @ApiOperation("新建分组") @PostMapping("add") public ReturnDTO add(@RequestBody EquipmentGroupForm groupForm){ groupInfoService.addGroup(groupForm); return ReturnUtil.success(); } + @ApiOperation("编辑分组") + @PostMapping("update") + public ReturnDTO update(@RequestBody EquipmentGroupForm groupForm){ + groupInfoService.updateGroup(groupForm); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0",paramType = "query") + }) + @ApiOperation("删除分组") + @PostMapping("delete") + public ReturnDTO delete(Long groupId){ + groupInfoService.deleteGroup(groupId); + return ReturnUtil.success(); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName",value = "分组名称",dataType = "String",paramType = "query") + }) + @ApiOperation("分组分页列表") + @GetMapping("listPage") + public ReturnDTO> listPage(String groupName){ + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(groupInfoService.listPage(page,groupName))); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupId",value = "分组id",dataType = "Long",example = "0") + }) + @ApiOperation("分组详情") + @GetMapping("detail") + public ReturnDTO detail(Long groupId){ + return ReturnUtil.success(groupInfoService.detail(groupId)); + } + } 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 6afcea0..75903e7 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 @@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.service.equipment.IEquipmentInfoService; import io.swagger.annotations.Api; +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.docx4j.wml.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -29,31 +34,74 @@ private final IEquipmentInfoService equipmentInfoService; + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备分页列表") @GetMapping("/info/listPage") @ResponseBody - public ReturnDTO listPage(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, - String certificateValidStart, String certificateValidEnd) { + public ReturnDTO> listPage(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd) { Page page = PageFactory.defaultPage(); page = equipmentInfoService.listPage(page, equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(super.packForBT(page)); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备列表") @GetMapping("/info/list") @ResponseBody - public ReturnDTO list(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> list(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.list(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentNo", value = "统一编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentType", value = "设备类型(1受检设备;2特种设备)",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptIds", value = "使用部门",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usePosition", value = "使用岗位",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "usageStatus", value = "使用状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidStart", value = "证书有效期开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "certificateValidEnd", value = "证书有效期结束时间",dataType = "String", paramType = "query") + }) @ApiOperation("设备聚合列表") @GetMapping("/info/groupByName") @ResponseBody - public ReturnDTO groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, + public ReturnDTO> groupByName(String equipmentNo, String equipmentName, String equipmentType, + @RequestParam(required = false) List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, equipmentType, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); return ReturnUtil.success(list); } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "equipmentId", value = "设备id",dataType = "Long",example = "0", paramType = "query"), + }) + @ApiOperation("设备详情-基本信息") + @GetMapping("/info/detail") + @ResponseBody + public ReturnDTO detail(Long equipmentId){ + return ReturnUtil.success(equipmentInfoService.detail(equipmentId)); + } } diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java new file mode 100644 index 0000000..cb2d561 --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/flowable/ApprovalOperateController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.controller.flowable; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.service.IBaseApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description: 审批操作按钮功能 + * @Author: wangpeng + * @Date: 2022/12/23 11:49 + */ +@Api(tags = "审批操作按钮功能接口") +@Controller +@RequestMapping("/approval/operate") +@RequiredArgsConstructor +public class ApprovalOperateController { + @Autowired + private IBaseApprovalService approvalService; + + /** + * 查看-审批记录 + * 查看每个节点的名称、人员、提交时间、审批留言 + * 步骤(钉钉中是获取后形成执行过程的流程图,ruoyi的是审批记录的表格形式,暂使用若依的符合prd): + * 1、跟据流程实例id查询历史活动(HistoricActivityInstance查询每个流程实例processInstance经历的所有活动,即走过的审批节点历程。包括任务执行人、网关、开始事件和结束事件等) + * 2、获取表单信息 + */ + @ApiOperation("审批操作-查看-审批记录") + @GetMapping("/approvalLog") + @ResponseBody + public ReturnDTO> approvalLog(String processId) { + Assert.isFalse(StringUtils.isEmpty(processId), () -> { + throw new BusinessException(BusinessExceptionEnum.PROCESS_ID_NULL); + }); + List> resultList = approvalService.approvalLog(processId); + return ReturnUtil.success(resultList); + } + +// /** +// * 查看-流程定义图,复用流程定义详情接口 +// */ +// +// /** +// * 同意 +// */ +// @ApiOperation("审批操作-同意") +// @PostMapping("/agree") +// @ResponseBody +// public ReturnDTO agree(@RequestBody @Valid ApprovalAgreeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.agree(request); +// } +// +// /** +// * 驳回 +// */ +// @ApiOperation("审批操作-驳回") +// @PostMapping("/reject") +// @ResponseBody +// public ReturnDTO reject(@RequestBody @Valid ApprovalRejectRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.reject(request); +// } +// +// /** +// * 拒绝 +// */ +// @ApiOperation("审批操作-拒绝") +// @PostMapping("/refuse") +// @ResponseBody +// public ReturnDTO refuse(@RequestBody @Valid ApprovalRefuseRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.refuse(request); +// } +// +// /** +// * 取消(发起者撤回,表单状态更改为已取消,仅审批中状态可撤回) +// */ +// @ApiOperation("审批操作-取消") +// @PostMapping("/revoke") +// @ResponseBody +// public ReturnDTO revoke(@RequestBody @Valid ApprovalRevokeRequest request, BindingResult bindingResult) { +// if(bindingResult.hasErrors()){ +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// } +// return approvalService.revoke(request); +// } +// +// /** +// * 审批操作-删除 +// * 该功能需要具体业务的删除,放在各业务controller中处理,提供公共flowable删除处理service:approvalOperateService +// */ +} 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 609b68f..c3f7855 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 @@ -6,8 +6,11 @@ * @Date: 2022/11/27 10:41 */ public interface MeterDictCode { + + String DICT_PREFIX = "eqpt"; //审批状态 - String APPROVAL_STATUS = "approvalStatus"; +// String APPROVAL_STATUS = "approvalStatus"; + String APPROVAL_STATUS = DICT_PREFIX + "ApprovalStatus"; //实施状态 String EFFECTIVE_STATUS = "effectiveStatus"; //文件类别 @@ -33,6 +36,12 @@ * 设备台账字典code */ //设备类别 + String EQUIPMENT_USAGE_STATUS = DICT_PREFIX + "EquipmentUsageStatus"; + + String EQUIPMENT_APPROVAL_TYPE = DICT_PREFIX + "EquipmentApprovalType"; + + + //设备类别 String EQUIPMENT_CATEGORY = "bizEquipmentCategory"; //计量标识 String METER_IDENTIFY = "bizMeterIdentify"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java new file mode 100644 index 0000000..5446273 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -0,0 +1,118 @@ +package com.casic.missiles.dto.flowable; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * @Description: 审批记录响应实体 + * @Author: wangpeng + * @Date: 2022/12/23 15:36 + */ +@Data +public class ApprovalLogResponse { + + @ApiModelProperty("任务编号") + private String taskId; + +// @ApiModelProperty("任务执行编号") +// private String executionId; + + @ApiModelProperty("任务名称") + private String taskName; + +// @ApiModelProperty("任务Key") +// private String taskDefKey; + + @ApiModelProperty("任务执行人Id") + private Long assigneeId; + + @ApiModelProperty("部门id") + private Long deptId; + + @ApiModelProperty("部门名称") + private String deptName; + +// @ApiModelProperty("流程发起人部门名称") +// private String startDeptName; + + @ApiModelProperty("任务执行人名称") + private String assigneeName; + + @ApiModelProperty("审批状态") + private String approvalStatus; + +// @ApiModelProperty("流程发起人Id") +// private String startUserId; + +// @ApiModelProperty("流程发起人名称") +// private String startUserName; + +// @ApiModelProperty("流程类型") +// private String category; + +// @ApiModelProperty("流程变量信息") +// private Object procVars; + +// @ApiModelProperty("局部变量信息") +// private Object taskLocalVars; + +// @ApiModelProperty("流程部署编号") +// private String deployId; + +// @ApiModelProperty("流程ID") +// private String procDefId; + +// @ApiModelProperty("流程key") +// private String procDefKey; + +// @ApiModelProperty("流程定义名称") +// private String procDefName; + +// @ApiModelProperty("流程定义内置使用版本") +// private int procDefVersion; + +// @ApiModelProperty("流程实例ID") +// private String procInsId; + +// @ApiModelProperty("历史流程实例ID") +// private String hisProcInsId; + + @ApiModelProperty("任务耗时") + private String duration; + + @ApiModelProperty("任务意见") + private FlowCommentDto comment; + +// @ApiModelProperty("候选执行人") +// private String candidate; + + @ApiModelProperty("任务创建时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("任务完成时间") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + @Data + @Builder + public static class FlowCommentDto { + /** + * 意见类别 1正常意见 2拒绝意见 3驳回意见 + */ + @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + private String type; + + /** + * 意见内容 + */ + @ApiModelProperty("意见内容") + private String comment; + } +} + 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 60f40cb..0ebd3f1 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 @@ -7,7 +7,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -26,218 +30,265 @@ private static final long serialVersionUID = 1L; + @ApiModelProperty("主键") @TableId("id") private Long id; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 设备类型(1受检设备;2特种设备) */ + @ApiModelProperty("设备类型(1受检设备;2特种设备)") @TableField("equipment_type") private String equipmentType; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") + @DictCodeField(message = "使用状态", cacheName = MeterDictCode.EQUIPMENT_USAGE_STATUS) private String usageStatus; + @ApiModelProperty("使用状态名称") + @TableField(exist = false) + private String usageStatusName; + /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + private Date productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + private Date purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private Date checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务(多个用,拼接) */ + @ApiModelProperty("参试任务(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; + + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } 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 5c8a8df..a5694cc 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 @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; @@ -28,7 +33,7 @@ private static final long serialVersionUID = 1L; - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** @@ -38,6 +43,11 @@ @TableField("approval_type") private Integer approvalType; + @ApiModelProperty("申请审批类型名称") + @TableField(exist = false) + @DictCodeField(message = "审批类型不合法", cacheName = MeterDictCode.EQUIPMENT_APPROVAL_TYPE) + private String approvalTypeName; + /** * 流程实例id */ @@ -48,8 +58,9 @@ /** * 审批状态(工作流回填) */ - @ApiModelProperty("审批状态(工作流回填)") + @ApiModelProperty("审批状态") @TableField("approval_status") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS, needValid = false) private String approvalStatus; /** @@ -119,7 +130,8 @@ */ @ApiModelProperty("生产日期") @TableField("product_date") - private LocalDateTime productDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productDate; /** * 单价(万元) @@ -133,7 +145,8 @@ */ @ApiModelProperty("购进日期") @TableField("purchase_date") - private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; /** * 型号规格 @@ -203,13 +216,15 @@ */ @ApiModelProperty("检定日期") @TableField("check_date") - private LocalDateTime checkDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkDate; /** * 证书有效期 */ @ApiModelProperty("证书有效期") @TableField("certificate_valid") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date certificateValid; /** @@ -294,6 +309,7 @@ */ @ApiModelProperty("创建时间") @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** @@ -301,6 +317,19 @@ */ @ApiModelProperty("更新时间") @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("任务id") + @TableField(exist = false) + private String taskId; + + @ApiModelProperty("可选决策项") + @TableField(exist = false) + private Integer decisionItem; + + @ApiModelProperty("组别信息") + @TableField(exist = false) + private List groupInfos; + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java new file mode 100644 index 0000000..39ce665 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentApprovalProcessor.java @@ -0,0 +1,31 @@ +package com.casic.missiles.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyEventPostProcessor; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; + +@Component(EQUIPMENT_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentInfoApprovalService approvalService; + + @Override + public void doHandleNotifyEvent(NotifyEventStatusDTO notifyEventStatusDTO) { + Long approvalId = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(approvalId), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + approvalService.finishApproval(approvalId); + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java index 2178816..a9b1f78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; @@ -26,9 +27,13 @@ ReturnDTO delete(BaseApprovalRequest request); - void deleteProcessInstance(String processInstanceId, String deleteReason); - void failUpdate(String processId); + ReturnDTO delete(String processId); + List getToBeApprovedList(String formId); - List getApprovedList(String formId); + List getAlreadyApprovalList(String formId); + + List> approvalLog(String processId); + + void failUpdate(String processId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java index 6aa114d..48748df 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupInfoService.java @@ -5,6 +5,8 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import java.util.List; + /** *

* 受检设备-设备分组信息表 服务类 @@ -25,4 +27,6 @@ EquipmentGroupForm detail(Long groupId); + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java index e734f6f..09a0013 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentGroupRelationService.java @@ -17,6 +17,10 @@ boolean deleteByGroupId(Long groupId); + boolean deleteByEquipment(Long equipmentId); + List listByGroup(Long groupId); + List listByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index e9f8e9f..bbabdc4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -33,6 +33,12 @@ ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + /** + * 通过审批 + * @param approvalId + */ + void finishApproval(Long approvalId); + EquipmentApprovalForm approvalInfoDetail(Long approvalId); Page listPage(Page page, String equipmentNo, String equipmentName,String equipmentType, String usePosition, String usageStatus, 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 94a0228..1d55dab 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 @@ -26,4 +26,6 @@ List groupByName(String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd); + EquipmentInfo detail(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java index 2ab991d..00fe71f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -1,65 +1,476 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.system.SystemFlowForm; +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.IBaseApprovalService; +import com.casic.missiles.service.system.ISystemFlowFormService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.impl.identity.Authentication; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.runtime.ProcessInstanceBuilder; +import org.flowable.engine.task.Comment; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -// todo @Service +@Slf4j +@RequiredArgsConstructor public class BaseApprovalServiceImpl implements IBaseApprovalService { - @Override - public ReturnDTO processSubmit(String formId, Long id) { - return null; + private final ISystemFlowFormService flowFormService; + + private final RuntimeService runtimeService; + + private final TaskService taskService; + + private final HistoryService historyService; + + private final RepositoryService repositoryService; + + private final UserMapper userMapper; + + private final DeptMapper deptMapper; + + private SystemFlowForm getSystemFlowForm(String formId) { + //根据业务表单id获取流程定义 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("form_id", formId); + return flowFormService.getOne(wrapper); + } + + @Transactional + public ReturnDTO processSubmit(String formId, Long id){ + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("该表单不存在对应的流程定义,formId:{}", formId); + return ReturnUtil.failed("流程提交处理失败,该表单不存在对应的流程定义,请重新提交"); + } + //流程发起人 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //根据流程key(SystemFlowForm中的procDefId)获取流程id + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); + if(Objects.isNull(processDefinition)){ + throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); + } + + //流程变量后续根据使用设置 + Map processVariables = new HashMap<>(); +// processVariables.put(FORM_VAR,formData); +// processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); +// processVariables.put(START_USER_INFO, JSONObject.toJSONString(startUserInfo)); + processVariables.put("root", String.valueOf(user.getId())); + + ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); + ProcessInstance processInstance = processInstanceBuilder + .processDefinitionId(processDefinition.getId()) //只能通过id启动,key启动不生效 + .variables(processVariables)//启动流程时设置的全局变量,整个流程实例生效 + .businessStatus(ApprovalStatusEnum.IN_APPROVED)//设置自定义的业务状态 + .businessKey(String.valueOf(id))//关联业务表主键 + .start(); + + if (Objects.isNull(processInstance)) { + log.error("流程实例启动失败,formId:{},deployId:{},procDefId:{}", formId, flowForm.getDeployId(), flowForm.getProcDefId()); + return ReturnUtil.failed("流程提交处理失败,流程实例启动失败"); + } + return ReturnUtil.success(processInstance); } @Override + @Transactional public ReturnDTO agree(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置同意发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //1正常意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "1", request.getComments()); + } + taskService.complete(task.getId()); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO reject(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置驳回发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //3驳回意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "3", request.getComments()); + } + //设置驳回状态为未通过 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED_REJECT); + + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO refuse(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //设置拒绝发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + if (StringUtils.isNotBlank(request.getComments())) { + //2拒绝意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), "2", request.getComments()); + } + //设置拒绝状态 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.FAILED); + + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "拒绝"); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO revoke(ApprovalRevokeRequest request) { - return null; + String processId = request.getProcessInstanceId(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + //只有发起者才能撤回 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .startedBy(String.valueOf(user.getId())) + .or() + .unfinished() //审批中的流程才能撤回 + .processInstanceBusinessStatus(ApprovalStatusEnum.IN_APPROVED) //查询审批中状态 + .endOr() + .singleResult(); + if (Objects.isNull(historicProcessInstance)) { + log.error("该用户无审批中的流程,userId:{},processInstanceId:{}", user.getId(), processId); + return ReturnUtil.failed("该用户无审批中的流程"); + } + + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + + + //设置取消状态 + runtimeService.updateBusinessStatus(processId, ApprovalStatusEnum.CANCELED); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(task.getProcessInstanceId()) + .moveActivityIdTo(task.getTaskDefinitionKey(), historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO delete(BaseApprovalRequest request) { - return null; + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + + //设置发起人 + Authentication.setAuthenticatedUserId(String.valueOf(user.getId())); + + Task task = taskService.createTaskQuery().taskId(request.getTaskId()).singleResult(); + + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(task.getProcessInstanceId(), "删除"); + + return ReturnUtil.success(); + } + + /** + * todo + * @param processId + * @return + */ + @Override + public ReturnDTO delete(String processId) { + runtimeService.deleteProcessInstance(processId, "删除"); + return ReturnUtil.success(); } @Override - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - - } - - @Override + @Transactional public void failUpdate(String processId) { - + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(processId) + .active() + .singleResult(); + taskService.addComment(task.getId(),processId,"0","提交"); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); } - @Override public List getToBeApprovedList(String formId) { - return null; + //根据业务表单id获取流程定义 + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询待审批的任务,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + JSONObject jsonObject = JSONObject.parseObject(flowForm.getFlowDef()); + JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); + Integer decisionItem = workFlowDef.getInteger("decisionItem"); + + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + //根据流程定义、登录用户id获取该业务待办任务 + List tasks = taskService.createTaskQuery() + .processDefinitionKey(flowForm.getProcDefId()) +// .deploymentId(flowForm.getDeployId()) + .taskAssignee(String.valueOf(user.getId())) +// .includeProcessVariables() + .orderByTaskCreateTime().desc() + .list(); + List toBeApprovedDTOs = new ArrayList<>(); + for (Task task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + //任务id,用户进行任务审批使用 + ToBeApprovedDTO toBeApprovedDTO = new ToBeApprovedDTO(); + toBeApprovedDTO.setTaskId(task.getId()); + toBeApprovedDTO.setBusinessKey(historicProcessInstance.getBusinessKey()); + toBeApprovedDTO.setDecisionItem(decisionItem); //设置可选决策项 + toBeApprovedDTO.setCreateTime(DateUtil.format(task.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + toBeApprovedDTOs.add(toBeApprovedDTO); + } + + //返回任务id和关联业务主键id + return toBeApprovedDTOs; } @Override - public List getApprovedList(String formId) { - return null; + public List getAlreadyApprovalList(String formId) { + SystemFlowForm flowForm = getSystemFlowForm(formId); + if (Objects.isNull(flowForm) || StringUtils.isEmpty(flowForm.getDeployId()) || StringUtils.isEmpty(flowForm.getProcDefId())) { + log.error("查询已审批的流程,该表单不存在对应的流程定义,formId:{}", formId); + return new ArrayList<>(); + } + List historicProcessInstances = new ArrayList<>(); + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + historicProcessInstances = getApprovedProcessInstancesForAssignee(flowForm, user); + List businessKeys = historicProcessInstances.stream().filter(i-> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); + return businessKeys; } + + private List getApprovedProcessInstancesForAssignee(SystemFlowForm flowForm, AuthUser user) { + List historicProcessInstances = new ArrayList<>(); + //根据流程定义、登录用户id获取该业务流程的实例结束的已办任务(作为审批者) + List tasks = historyService.createHistoricTaskInstanceQuery() + .processDefinitionKey(flowForm.getProcDefId()) + .taskAssignee(String.valueOf(user.getId())) + .finished() //任务已完成 + .orderByTaskCreateTime().desc() + .list(); + //根据作为审批者的任务查询流程实例 + for (HistoricTaskInstance task : tasks) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .notDeleted() + .processInstanceId(task.getProcessInstanceId()).singleResult(); + historicProcessInstances.add(historicProcessInstance); + } + return historicProcessInstances; + } + + @Override + public List> approvalLog(String processId) { + //一个task只能有一个处理人assignee,可以有多个候选人candidate users + //实际办理人,并行会签时是多个人,串行会签时是一个人,或签时是多个人 + List list = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(processId) + .orderByHistoricActivityInstanceStartTime() + .desc().list(); + List hisFlowList = new ArrayList<>(); + for (HistoricActivityInstance histIns : list) { + //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null + if (StringUtils.isNotBlank(histIns.getTaskId())) { + ApprovalLogResponse flowTask = new ApprovalLogResponse(); + //activityId对应用户任务节点的taskId(ACT_RU_TASK表的TASK_DEF_KEY_,即流程定义中自定义生成的分taskId),用于对审批人按任务节点分组 + flowTask.setTaskId(histIns.getActivityId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + //实际办理人,最后一个节点是应办理人 + if (StringUtils.isNotBlank(histIns.getAssignee())) { + //json转bpmn中assignee是用户id + User user = userMapper.selectById(Long.parseLong(histIns.getAssignee())); + if (!Objects.isNull(user)) { + flowTask.setAssigneeId(user.getId()); + flowTask.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + flowTask.setDeptId(user.getDeptId()); + flowTask.setDeptName(dept.getSimpleName()); + } + } + + flowTask.setDuration(histIns.getDurationInMillis() == null || histIns.getDurationInMillis() == 0 ? null : getDate(histIns.getDurationInMillis())); + // 获取意见评论内容 + List commentList = taskService.getProcessInstanceComments(histIns.getProcessInstanceId()); + commentList.forEach(comment -> { + if (histIns.getTaskId().equals(comment.getTaskId())) { + flowTask.setComment(ApprovalLogResponse.FlowCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build()); + } + }); +// 覆盖已有的root,因为驳回会再产生一个发起人任务 + int flag = 0; + ApprovalLogResponse oldValue = null; + if(histIns.getActivityId().contains("root")){ + for (ApprovalLogResponse his : hisFlowList) { + if(his.getTaskId().contains("root")){ + oldValue = his; + flag = 1; + break; + } + } + } + if(flag > 0){ + hisFlowList.remove(oldValue); + } + hisFlowList.add(flowTask); + } + } + Map> resultMap = new HashMap<>(); + //结果按taskId分组,并保证审批顺序 + if (!CollectionUtils.isEmpty(hisFlowList)) { + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + } + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 + Map> finalResultMap = resultMap; + List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { + List approvalLogList = finalResultMap.get(key); + for (ApprovalLogResponse approvalLog : approvalLogList) { + if (approvalLog.getTaskId().contains("root")) { + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + User user = userMapper.selectById(Long.valueOf(startUserId)); + approvalLog.setApprovalStatus(approvalLog.getTaskName());//发起人 + if(!Objects.isNull(user)){ + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } else if (Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批中"); + } else if (!Objects.isNull(approvalLog.getFinishTime())) { + approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 + } + } + resultList.add(approvalLogList); + } + + return resultList; + } + + + private String getDate(long ms) { + + long day = ms / (24 * 60 * 60 * 1000); + long hour = (ms / (60 * 60 * 1000) - day * 24); + long minute = ((ms / (60 * 1000)) - day * 24 * 60 - hour * 60); + long second = (ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); + + if (day > 0) { + return day + "天" + hour + "小时" + minute + "分钟"; + } + if (hour > 0) { + return hour + "小时" + minute + "分钟"; + } + if (minute > 0) { + return minute + "分钟"; + } + if (second > 0) { + return second + "秒"; + } else { + return 0 + "秒"; + } + } + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java index 8d45b5b..8b82fe7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupInfoServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,12 +10,17 @@ import com.casic.missiles.dto.equipment.EquipmentGroupForm; import com.casic.missiles.mapper.equipment.EquipmentGroupInfoMapper; import com.casic.missiles.model.equipment.EquipmentGroupInfo; +import com.casic.missiles.model.equipment.EquipmentGroupRelation; import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import com.casic.missiles.service.equipment.IEquipmentGroupRelationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 受检设备-设备分组信息表 服务实现类 @@ -84,6 +90,26 @@ EquipmentGroupInfo groupInfo = this.getById(groupId); groupForm.setGroupInfo(groupInfo); - return null; + List relations = groupRelationService.listByGroup(groupId); + groupForm.setEquipmentList(relations); + + return groupForm; + } + + @Override + public List selectByEquipment(Long equipmentId) { + String existSql = String.format("(select id from eqpt_equipment_group_relation r where r.group_id = eqpt_equipment_group_info.id and r.equipment_id = %d)",equipmentId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.exists(existSql); + return this.list(queryWrapper); + +// List list = groupRelationService.listByEquipment(equipmentId); +// if(ObjectUtil.isNotEmpty(list)){ +// List groupIds = list.stream().map(EquipmentGroupRelation::getGroupId).distinct().collect(Collectors.toList()); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",groupIds); +// return this.list(queryWrapper); +// } +// return new ArrayList<>(); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java index 6072bea..03d5cab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentGroupRelationServiceImpl.java @@ -29,6 +29,20 @@ @Override public List listByGroup(Long groupId) { - return null; + return this.baseMapper.listByGroup(groupId); + } + + @Override + public boolean deleteByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.remove(queryWrapper); + } + + @Override + public List listByEquipment(Long equipmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("equipment_id",equipmentId); + return this.list(queryWrapper); } } 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 7dc3868..198f524 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 @@ -1,5 +1,6 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -15,14 +16,13 @@ import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.mapper.equipment.EquipmentInfoApprovalMapper; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; -import com.casic.missiles.service.equipment.IEquipmentAttachmentService; -import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -31,10 +31,14 @@ import java.io.Serializable; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; + +import static com.casic.missiles.enums.ApprovalTypeEnum.*; import static com.casic.missiles.enums.equipment.EquipmentTypeEnum.EQUIPMENT_TYPE_NORMAL; + /** *

* 受检设备-设备台账-审批记录表 服务实现类 @@ -47,9 +51,10 @@ @RequiredArgsConstructor public class EquipmentInfoApprovalServiceImpl extends ServiceImpl implements IEquipmentInfoApprovalService { + private final IEquipmentInfoService equipmentInfoService; private final IEquipmentAttachmentService attachmentService; private final IEquipmentTechnicalTargetService technicalTargetService; - + private final IEquipmentGroupInfoService groupInfoService; private final IBaseApprovalService baseApprovalService; @Override @@ -57,7 +62,7 @@ public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { // todo 删除申请,需要把设备信息回填? // 0. 生成设备id - if (ObjectUtil.isNotEmpty(approvalForm.getEquipmentId())) { + if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); } // 1. 生成统一编号 @@ -75,23 +80,11 @@ if (CollUtil.isNotEmpty(approvalForm.getAttachments())) { attachmentService.saveByEquipment(approvalForm.getEquipmentId(), approvalForm.getAttachments()); } - // 4. 删除旧流程(已取消后再次编辑) todo 改了!! - if (StrUtil.isNotEmpty(approvalForm.getProcessId())) { -// this.deleteProcessInstance(approvalForm.getProcessId()); -// approvalForm.setProcessId(null); - } this.saveOrUpdate(approvalForm); // 4. 返回申请记录id return approvalForm.getId(); } - private void deleteProcessInstance(String processId) { - if (StrUtil.isNotEmpty(processId)) { - // todo 去除魔法值 - baseApprovalService.deleteProcessInstance(processId, "删除"); - } - } - private void resetProcessInstance(String processId) { // todo 重置流程 } @@ -102,7 +95,9 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); attachmentService.removeByEquipment(approvalInfo.getEquipmentId()); technicalTargetService.removeByEquipment(approvalInfo.getEquipmentId()); - this.deleteProcessInstance(approvalInfo.getProcessId()); + if (StrUtil.isNotEmpty(approvalInfo.getProcessId())) { + baseApprovalService.delete(approvalInfo.getProcessId()); + } this.removeById(approvalId); } @@ -117,7 +112,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - resetProcessInstance(approvalInfo.getProcessId()); + baseApprovalService.failUpdate(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -149,7 +144,7 @@ @Override public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { - ReturnDTO res = baseApprovalService.refuse(refuseRequest); + ReturnDTO res = baseApprovalService.reject(refuseRequest); if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { return res; } @@ -157,16 +152,47 @@ } @Override + @Transactional + public void finishApproval(Long approvalId) { + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); + this.updateById(approvalInfo); + if(ObjectUtil.isEmpty(approvalInfo)){ + return; + } + switch (approvalInfo.getApprovalType()){ + case ADD: + case UPDATE: + EquipmentInfo equipmentInfo = new EquipmentInfo(); + BeanUtil.copyProperties(approvalInfo,equipmentInfo); + equipmentInfo.setId(approvalInfo.getEquipmentId()); + equipmentInfoService.saveOrUpdate(equipmentInfo); + break; + case DELETE: + equipmentInfoService.removeById(approvalInfo.getEquipmentId()); + break; + default: + break; + } + } + + @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); - info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + if(ObjectUtil.isNotEmpty(info)){ + info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); + info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); + } return info; } @Override public Page listPage(Page page, String equipmentNo, String equipmentName, String equipmentType, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, equipmentType, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + if(StrUtil.isNotEmpty(approvalStatus)){ + queryWrapper.eq("approval_status",approvalStatus); + } return this.page(page, queryWrapper); } @@ -184,12 +210,21 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - return this.page(page, queryWrapper); + page = this.page(page,queryWrapper); + for (EquipmentInfoApproval approval : page.getRecords()) { + Optional toBeApprovedOpt = toBeApprovedList.stream().filter(i->i.getBusinessKey().equals(approval.getId().toString())).findAny(); + if(toBeApprovedOpt.isPresent()){ + ToBeApprovedDTO toBeApprovedDTO = toBeApprovedOpt.get(); + approval.setTaskId(toBeApprovedDTO.getTaskId()); + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + } + return page; } @Override public Page approvedListPage(Page page, String equipmentNo, String equipmentName, String equipmentType, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { - List approvedIds = baseApprovalService.getApprovedList(formId); + List approvedIds = baseApprovalService.getAlreadyApprovalList(formId); if (CollUtil.isEmpty(approvedIds)) { return page; } 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 0ffe6bc..dc27661 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 @@ -1,6 +1,7 @@ package com.casic.missiles.service.impl.equipment; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,6 +10,7 @@ import com.casic.missiles.dto.equipment.EquipmentAggr; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.service.equipment.IEquipmentGroupInfoService; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -30,6 +32,7 @@ public class EquipmentInfoServiceImpl extends ServiceImpl implements IEquipmentInfoService { private final AbstractPermissionContext permissionContext; + private final IEquipmentGroupInfoService groupInfoService; @Override @@ -88,4 +91,13 @@ } return queryWrapper; } + + @Override + public EquipmentInfo detail(Long equipmentId) { + EquipmentInfo equipmentInfo = this.getById(equipmentId); + if(ObjectUtil.isNotEmpty(equipmentInfo)){ + equipmentInfo.setGroupInfos(groupInfoService.selectByEquipment(equipmentId)); + } + return equipmentInfo; + } }