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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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/swagger/SwaggerEntity.java b/casic-metering-common/src/main/java/com/casic/missiles/config/swagger/SwaggerEntity.java index 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 00fe71f..8e31bfc 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,8 +1,10 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.model.auth.AuthUser; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.system.ISystemFlowFormService; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -74,7 +77,7 @@ } @Transactional - public ReturnDTO processSubmit(String formId, Long id){ + 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); @@ -89,7 +92,7 @@ //根据流程key(SystemFlowForm中的procDefId)获取流程id ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); - if(Objects.isNull(processDefinition)){ + if (Objects.isNull(processDefinition)) { throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); } @@ -212,26 +215,31 @@ 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(); + List tasks = taskService.createTaskQuery() + .processInstanceId(processId) + .active().list(); + if (CollUtil.isNotEmpty(tasks)) { + + tasks.forEach(task -> { + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + }); + + String defKey = tasks.get(0).getTaskDefinitionKey(); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processId) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(processId) + .moveActivityIdTo(defKey, historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + } + return ReturnUtil.success(); } @@ -256,6 +264,7 @@ /** * todo + * * @param processId * @return */ @@ -267,13 +276,13 @@ @Override @Transactional - public void failUpdate(String processId) { + public void resubmit(String processId) { //发起人审批通过 Task task = taskService.createTaskQuery() .processInstanceId(processId) .active() .singleResult(); - taskService.addComment(task.getId(),processId,"0","提交"); + taskService.addComment(task.getId(), processId, "0", "提交"); taskService.complete(task.getId()); //更新状态为审批中 runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); @@ -332,7 +341,7 @@ 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()); + List businessKeys = historicProcessInstances.stream().filter(i -> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); return businessKeys; } @@ -362,8 +371,9 @@ List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processId) .orderByHistoricActivityInstanceStartTime() - .desc().list(); + .asc().list(); List hisFlowList = new ArrayList<>(); + List commentList = taskService.getProcessInstanceComments(processId); for (HistoricActivityInstance histIns : list) { //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null if (StringUtils.isNotBlank(histIns.getTaskId())) { @@ -388,50 +398,60 @@ 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); - } +// 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); } } + hisFlowList = hisFlowList.stream().filter(i -> !(i.getTaskId().contains("root") && ObjectUtil.isEmpty(i.getFinishTime()))).collect(Collectors.toList()); + hisFlowList = hisFlowList.stream().filter(i -> !(!i.getTaskId().contains("root") && ObjectUtil.isNotEmpty(i.getFinishTime()) && ObjectUtil.isEmpty(i.getComment()))).collect(Collectors.toList()); + Map> resultMap = new HashMap<>(); //结果按taskId分组,并保证审批顺序 if (!CollectionUtils.isEmpty(hisFlowList)) { - resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(i -> String.format("%s_%s", i.getTaskId(), DateUtil.formatDateTime(i.getCreateTime())), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); } + + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + User user = userMapper.selectById(Long.valueOf(startUserId)); + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 Map> finalResultMap = resultMap; List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { List approvalLogList = finalResultMap.get(key); + boolean cancel = false; 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)){ + if (!Objects.isNull(user)) { approvalLog.setAssigneeName(user.getName()); Dept dept = deptMapper.selectById(user.getDeptId()); approvalLog.setDeptId(user.getDeptId()); @@ -442,8 +462,25 @@ } else if (!Objects.isNull(approvalLog.getFinishTime())) { approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 } + + if (ObjectUtil.isNotEmpty(approvalLog.getComment()) && "4".equals(approvalLog.getComment().getType())) { + cancel = true; + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + if (!Objects.isNull(user)) { + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } } - resultList.add(approvalLogList); + + if(!cancel){ + resultList.add(approvalLogList); + }else { + resultList.add(Collections.singletonList(approvalLogList.get(0))); + } + } return resultList; 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 00fe71f..8e31bfc 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,8 +1,10 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.model.auth.AuthUser; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.system.ISystemFlowFormService; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -74,7 +77,7 @@ } @Transactional - public ReturnDTO processSubmit(String formId, Long id){ + 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); @@ -89,7 +92,7 @@ //根据流程key(SystemFlowForm中的procDefId)获取流程id ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); - if(Objects.isNull(processDefinition)){ + if (Objects.isNull(processDefinition)) { throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); } @@ -212,26 +215,31 @@ 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(); + List tasks = taskService.createTaskQuery() + .processInstanceId(processId) + .active().list(); + if (CollUtil.isNotEmpty(tasks)) { + + tasks.forEach(task -> { + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + }); + + String defKey = tasks.get(0).getTaskDefinitionKey(); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processId) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(processId) + .moveActivityIdTo(defKey, historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + } + return ReturnUtil.success(); } @@ -256,6 +264,7 @@ /** * todo + * * @param processId * @return */ @@ -267,13 +276,13 @@ @Override @Transactional - public void failUpdate(String processId) { + public void resubmit(String processId) { //发起人审批通过 Task task = taskService.createTaskQuery() .processInstanceId(processId) .active() .singleResult(); - taskService.addComment(task.getId(),processId,"0","提交"); + taskService.addComment(task.getId(), processId, "0", "提交"); taskService.complete(task.getId()); //更新状态为审批中 runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); @@ -332,7 +341,7 @@ 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()); + List businessKeys = historicProcessInstances.stream().filter(i -> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); return businessKeys; } @@ -362,8 +371,9 @@ List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processId) .orderByHistoricActivityInstanceStartTime() - .desc().list(); + .asc().list(); List hisFlowList = new ArrayList<>(); + List commentList = taskService.getProcessInstanceComments(processId); for (HistoricActivityInstance histIns : list) { //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null if (StringUtils.isNotBlank(histIns.getTaskId())) { @@ -388,50 +398,60 @@ 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); - } +// 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); } } + hisFlowList = hisFlowList.stream().filter(i -> !(i.getTaskId().contains("root") && ObjectUtil.isEmpty(i.getFinishTime()))).collect(Collectors.toList()); + hisFlowList = hisFlowList.stream().filter(i -> !(!i.getTaskId().contains("root") && ObjectUtil.isNotEmpty(i.getFinishTime()) && ObjectUtil.isEmpty(i.getComment()))).collect(Collectors.toList()); + Map> resultMap = new HashMap<>(); //结果按taskId分组,并保证审批顺序 if (!CollectionUtils.isEmpty(hisFlowList)) { - resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(i -> String.format("%s_%s", i.getTaskId(), DateUtil.formatDateTime(i.getCreateTime())), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); } + + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + User user = userMapper.selectById(Long.valueOf(startUserId)); + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 Map> finalResultMap = resultMap; List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { List approvalLogList = finalResultMap.get(key); + boolean cancel = false; 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)){ + if (!Objects.isNull(user)) { approvalLog.setAssigneeName(user.getName()); Dept dept = deptMapper.selectById(user.getDeptId()); approvalLog.setDeptId(user.getDeptId()); @@ -442,8 +462,25 @@ } else if (!Objects.isNull(approvalLog.getFinishTime())) { approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 } + + if (ObjectUtil.isNotEmpty(approvalLog.getComment()) && "4".equals(approvalLog.getComment().getType())) { + cancel = true; + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + if (!Objects.isNull(user)) { + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } } - resultList.add(approvalLogList); + + if(!cancel){ + resultList.add(approvalLogList); + }else { + resultList.add(Collections.singletonList(approvalLogList.get(0))); + } + } return resultList; 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 198f524..a09b638 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 @@ -23,6 +23,7 @@ import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.CasicBeanUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -60,7 +62,19 @@ @Override @Transactional public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { - // todo 删除申请,需要把设备信息回填? + // 删除申请:把设备信息回填 + if (DELETE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + BeanUtil.copyProperties(equipmentInfo, approvalForm); + } + // 编辑申请:不需要审批的字段直接生效 + if (UPDATE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + this.simpleUpdate(approvalForm, equipmentInfo); + if (!needApproval(approvalForm, equipmentInfo)) { + return approvalForm.getId(); + } + } // 0. 生成设备id if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); @@ -85,8 +99,23 @@ return approvalForm.getId(); } - private void resetProcessInstance(String processId) { - // todo 重置流程 + private boolean simpleUpdate(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + CasicBeanUtil.copySpecifyProperties(approvalForm, info, "checkOrganization", "checkDate", + "certificateValid", "meterIdentify", "usePosition", "directorName", "rfid", + "useSign", "installLocation", "installLocationExt", "testTask", "remarkExt"); + return equipmentInfoService.updateById(info); + } + + private boolean needApproval(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + if (ObjectUtil.isNotEmpty(info)) { + return !CasicBeanUtil.fieldCompare(info, approvalForm, Arrays.asList( + "equipmentNo", "equipmentName", "equipmentType", "usageStatus", "level", + "productCountry", "manufacturer", "manufactureNo", "productDate", "unitPrice", + "purchaseDate", "model", "qualityCondition", "companyId", "deptId", "category", + "checkCycle", "remark", "instructionsFile" + )); + } + return true; } @Override @@ -112,7 +141,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - baseApprovalService.failUpdate(approvalInfo.getProcessId()); + baseApprovalService.resubmit(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -157,14 +186,14 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); this.updateById(approvalInfo); - if(ObjectUtil.isEmpty(approvalInfo)){ + if (ObjectUtil.isEmpty(approvalInfo)) { return; } - switch (approvalInfo.getApprovalType()){ + switch (approvalInfo.getApprovalType()) { case ADD: case UPDATE: EquipmentInfo equipmentInfo = new EquipmentInfo(); - BeanUtil.copyProperties(approvalInfo,equipmentInfo); + CasicBeanUtil.copySpecifyProperties(approvalInfo, equipmentInfo); equipmentInfo.setId(approvalInfo.getEquipmentId()); equipmentInfoService.saveOrUpdate(equipmentInfo); break; @@ -179,7 +208,7 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - if(ObjectUtil.isNotEmpty(info)){ + if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); @@ -190,8 +219,8 @@ @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); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval_status", approvalStatus); } return this.page(page, queryWrapper); } @@ -210,11 +239,11 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - page = 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(); + 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()); } 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 00fe71f..8e31bfc 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,8 +1,10 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.model.auth.AuthUser; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.system.ISystemFlowFormService; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -74,7 +77,7 @@ } @Transactional - public ReturnDTO processSubmit(String formId, Long id){ + 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); @@ -89,7 +92,7 @@ //根据流程key(SystemFlowForm中的procDefId)获取流程id ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); - if(Objects.isNull(processDefinition)){ + if (Objects.isNull(processDefinition)) { throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); } @@ -212,26 +215,31 @@ 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(); + List tasks = taskService.createTaskQuery() + .processInstanceId(processId) + .active().list(); + if (CollUtil.isNotEmpty(tasks)) { + + tasks.forEach(task -> { + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + }); + + String defKey = tasks.get(0).getTaskDefinitionKey(); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processId) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(processId) + .moveActivityIdTo(defKey, historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + } + return ReturnUtil.success(); } @@ -256,6 +264,7 @@ /** * todo + * * @param processId * @return */ @@ -267,13 +276,13 @@ @Override @Transactional - public void failUpdate(String processId) { + public void resubmit(String processId) { //发起人审批通过 Task task = taskService.createTaskQuery() .processInstanceId(processId) .active() .singleResult(); - taskService.addComment(task.getId(),processId,"0","提交"); + taskService.addComment(task.getId(), processId, "0", "提交"); taskService.complete(task.getId()); //更新状态为审批中 runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); @@ -332,7 +341,7 @@ 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()); + List businessKeys = historicProcessInstances.stream().filter(i -> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); return businessKeys; } @@ -362,8 +371,9 @@ List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processId) .orderByHistoricActivityInstanceStartTime() - .desc().list(); + .asc().list(); List hisFlowList = new ArrayList<>(); + List commentList = taskService.getProcessInstanceComments(processId); for (HistoricActivityInstance histIns : list) { //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null if (StringUtils.isNotBlank(histIns.getTaskId())) { @@ -388,50 +398,60 @@ 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); - } +// 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); } } + hisFlowList = hisFlowList.stream().filter(i -> !(i.getTaskId().contains("root") && ObjectUtil.isEmpty(i.getFinishTime()))).collect(Collectors.toList()); + hisFlowList = hisFlowList.stream().filter(i -> !(!i.getTaskId().contains("root") && ObjectUtil.isNotEmpty(i.getFinishTime()) && ObjectUtil.isEmpty(i.getComment()))).collect(Collectors.toList()); + Map> resultMap = new HashMap<>(); //结果按taskId分组,并保证审批顺序 if (!CollectionUtils.isEmpty(hisFlowList)) { - resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(i -> String.format("%s_%s", i.getTaskId(), DateUtil.formatDateTime(i.getCreateTime())), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); } + + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + User user = userMapper.selectById(Long.valueOf(startUserId)); + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 Map> finalResultMap = resultMap; List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { List approvalLogList = finalResultMap.get(key); + boolean cancel = false; 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)){ + if (!Objects.isNull(user)) { approvalLog.setAssigneeName(user.getName()); Dept dept = deptMapper.selectById(user.getDeptId()); approvalLog.setDeptId(user.getDeptId()); @@ -442,8 +462,25 @@ } else if (!Objects.isNull(approvalLog.getFinishTime())) { approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 } + + if (ObjectUtil.isNotEmpty(approvalLog.getComment()) && "4".equals(approvalLog.getComment().getType())) { + cancel = true; + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + if (!Objects.isNull(user)) { + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } } - resultList.add(approvalLogList); + + if(!cancel){ + resultList.add(approvalLogList); + }else { + resultList.add(Collections.singletonList(approvalLogList.get(0))); + } + } return resultList; 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 198f524..a09b638 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 @@ -23,6 +23,7 @@ import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.CasicBeanUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -60,7 +62,19 @@ @Override @Transactional public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { - // todo 删除申请,需要把设备信息回填? + // 删除申请:把设备信息回填 + if (DELETE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + BeanUtil.copyProperties(equipmentInfo, approvalForm); + } + // 编辑申请:不需要审批的字段直接生效 + if (UPDATE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + this.simpleUpdate(approvalForm, equipmentInfo); + if (!needApproval(approvalForm, equipmentInfo)) { + return approvalForm.getId(); + } + } // 0. 生成设备id if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); @@ -85,8 +99,23 @@ return approvalForm.getId(); } - private void resetProcessInstance(String processId) { - // todo 重置流程 + private boolean simpleUpdate(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + CasicBeanUtil.copySpecifyProperties(approvalForm, info, "checkOrganization", "checkDate", + "certificateValid", "meterIdentify", "usePosition", "directorName", "rfid", + "useSign", "installLocation", "installLocationExt", "testTask", "remarkExt"); + return equipmentInfoService.updateById(info); + } + + private boolean needApproval(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + if (ObjectUtil.isNotEmpty(info)) { + return !CasicBeanUtil.fieldCompare(info, approvalForm, Arrays.asList( + "equipmentNo", "equipmentName", "equipmentType", "usageStatus", "level", + "productCountry", "manufacturer", "manufactureNo", "productDate", "unitPrice", + "purchaseDate", "model", "qualityCondition", "companyId", "deptId", "category", + "checkCycle", "remark", "instructionsFile" + )); + } + return true; } @Override @@ -112,7 +141,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - baseApprovalService.failUpdate(approvalInfo.getProcessId()); + baseApprovalService.resubmit(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -157,14 +186,14 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); this.updateById(approvalInfo); - if(ObjectUtil.isEmpty(approvalInfo)){ + if (ObjectUtil.isEmpty(approvalInfo)) { return; } - switch (approvalInfo.getApprovalType()){ + switch (approvalInfo.getApprovalType()) { case ADD: case UPDATE: EquipmentInfo equipmentInfo = new EquipmentInfo(); - BeanUtil.copyProperties(approvalInfo,equipmentInfo); + CasicBeanUtil.copySpecifyProperties(approvalInfo, equipmentInfo); equipmentInfo.setId(approvalInfo.getEquipmentId()); equipmentInfoService.saveOrUpdate(equipmentInfo); break; @@ -179,7 +208,7 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - if(ObjectUtil.isNotEmpty(info)){ + if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); @@ -190,8 +219,8 @@ @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); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval_status", approvalStatus); } return this.page(page, queryWrapper); } @@ -210,11 +239,11 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - page = 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(); + 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()); } 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 dc27661..85b5b90 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 @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; @@ -16,6 +17,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; @@ -100,4 +102,22 @@ } return equipmentInfo; } + + @Override + public boolean updateEquipmentStatus(Long equipmentId,String usageStatus){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("usage_status",usageStatus); + return this.update(updateWrapper); + } + + @Override + public boolean updateCertificateValid(Long equipmentId, Date certificateValid) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("certificate_valid",certificateValid); + return this.update(updateWrapper); + } + + } 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 00fe71f..8e31bfc 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,8 +1,10 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.model.auth.AuthUser; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.system.ISystemFlowFormService; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -74,7 +77,7 @@ } @Transactional - public ReturnDTO processSubmit(String formId, Long id){ + 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); @@ -89,7 +92,7 @@ //根据流程key(SystemFlowForm中的procDefId)获取流程id ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); - if(Objects.isNull(processDefinition)){ + if (Objects.isNull(processDefinition)) { throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); } @@ -212,26 +215,31 @@ 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(); + List tasks = taskService.createTaskQuery() + .processInstanceId(processId) + .active().list(); + if (CollUtil.isNotEmpty(tasks)) { + + tasks.forEach(task -> { + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + }); + + String defKey = tasks.get(0).getTaskDefinitionKey(); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processId) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(processId) + .moveActivityIdTo(defKey, historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + } + return ReturnUtil.success(); } @@ -256,6 +264,7 @@ /** * todo + * * @param processId * @return */ @@ -267,13 +276,13 @@ @Override @Transactional - public void failUpdate(String processId) { + public void resubmit(String processId) { //发起人审批通过 Task task = taskService.createTaskQuery() .processInstanceId(processId) .active() .singleResult(); - taskService.addComment(task.getId(),processId,"0","提交"); + taskService.addComment(task.getId(), processId, "0", "提交"); taskService.complete(task.getId()); //更新状态为审批中 runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); @@ -332,7 +341,7 @@ 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()); + List businessKeys = historicProcessInstances.stream().filter(i -> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); return businessKeys; } @@ -362,8 +371,9 @@ List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processId) .orderByHistoricActivityInstanceStartTime() - .desc().list(); + .asc().list(); List hisFlowList = new ArrayList<>(); + List commentList = taskService.getProcessInstanceComments(processId); for (HistoricActivityInstance histIns : list) { //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null if (StringUtils.isNotBlank(histIns.getTaskId())) { @@ -388,50 +398,60 @@ 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); - } +// 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); } } + hisFlowList = hisFlowList.stream().filter(i -> !(i.getTaskId().contains("root") && ObjectUtil.isEmpty(i.getFinishTime()))).collect(Collectors.toList()); + hisFlowList = hisFlowList.stream().filter(i -> !(!i.getTaskId().contains("root") && ObjectUtil.isNotEmpty(i.getFinishTime()) && ObjectUtil.isEmpty(i.getComment()))).collect(Collectors.toList()); + Map> resultMap = new HashMap<>(); //结果按taskId分组,并保证审批顺序 if (!CollectionUtils.isEmpty(hisFlowList)) { - resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(i -> String.format("%s_%s", i.getTaskId(), DateUtil.formatDateTime(i.getCreateTime())), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); } + + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + User user = userMapper.selectById(Long.valueOf(startUserId)); + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 Map> finalResultMap = resultMap; List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { List approvalLogList = finalResultMap.get(key); + boolean cancel = false; 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)){ + if (!Objects.isNull(user)) { approvalLog.setAssigneeName(user.getName()); Dept dept = deptMapper.selectById(user.getDeptId()); approvalLog.setDeptId(user.getDeptId()); @@ -442,8 +462,25 @@ } else if (!Objects.isNull(approvalLog.getFinishTime())) { approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 } + + if (ObjectUtil.isNotEmpty(approvalLog.getComment()) && "4".equals(approvalLog.getComment().getType())) { + cancel = true; + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + if (!Objects.isNull(user)) { + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } } - resultList.add(approvalLogList); + + if(!cancel){ + resultList.add(approvalLogList); + }else { + resultList.add(Collections.singletonList(approvalLogList.get(0))); + } + } return resultList; 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 198f524..a09b638 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 @@ -23,6 +23,7 @@ import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.CasicBeanUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -60,7 +62,19 @@ @Override @Transactional public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { - // todo 删除申请,需要把设备信息回填? + // 删除申请:把设备信息回填 + if (DELETE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + BeanUtil.copyProperties(equipmentInfo, approvalForm); + } + // 编辑申请:不需要审批的字段直接生效 + if (UPDATE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + this.simpleUpdate(approvalForm, equipmentInfo); + if (!needApproval(approvalForm, equipmentInfo)) { + return approvalForm.getId(); + } + } // 0. 生成设备id if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); @@ -85,8 +99,23 @@ return approvalForm.getId(); } - private void resetProcessInstance(String processId) { - // todo 重置流程 + private boolean simpleUpdate(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + CasicBeanUtil.copySpecifyProperties(approvalForm, info, "checkOrganization", "checkDate", + "certificateValid", "meterIdentify", "usePosition", "directorName", "rfid", + "useSign", "installLocation", "installLocationExt", "testTask", "remarkExt"); + return equipmentInfoService.updateById(info); + } + + private boolean needApproval(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + if (ObjectUtil.isNotEmpty(info)) { + return !CasicBeanUtil.fieldCompare(info, approvalForm, Arrays.asList( + "equipmentNo", "equipmentName", "equipmentType", "usageStatus", "level", + "productCountry", "manufacturer", "manufactureNo", "productDate", "unitPrice", + "purchaseDate", "model", "qualityCondition", "companyId", "deptId", "category", + "checkCycle", "remark", "instructionsFile" + )); + } + return true; } @Override @@ -112,7 +141,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - baseApprovalService.failUpdate(approvalInfo.getProcessId()); + baseApprovalService.resubmit(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -157,14 +186,14 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); this.updateById(approvalInfo); - if(ObjectUtil.isEmpty(approvalInfo)){ + if (ObjectUtil.isEmpty(approvalInfo)) { return; } - switch (approvalInfo.getApprovalType()){ + switch (approvalInfo.getApprovalType()) { case ADD: case UPDATE: EquipmentInfo equipmentInfo = new EquipmentInfo(); - BeanUtil.copyProperties(approvalInfo,equipmentInfo); + CasicBeanUtil.copySpecifyProperties(approvalInfo, equipmentInfo); equipmentInfo.setId(approvalInfo.getEquipmentId()); equipmentInfoService.saveOrUpdate(equipmentInfo); break; @@ -179,7 +208,7 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - if(ObjectUtil.isNotEmpty(info)){ + if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); @@ -190,8 +219,8 @@ @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); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval_status", approvalStatus); } return this.page(page, queryWrapper); } @@ -210,11 +239,11 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - page = 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(); + 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()); } 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 dc27661..85b5b90 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 @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; @@ -16,6 +17,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; @@ -100,4 +102,22 @@ } return equipmentInfo; } + + @Override + public boolean updateEquipmentStatus(Long equipmentId,String usageStatus){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("usage_status",usageStatus); + return this.update(updateWrapper); + } + + @Override + public boolean updateCertificateValid(Long equipmentId, Date certificateValid) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("certificate_valid",certificateValid); + return this.update(updateWrapper); + } + + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java new file mode 100644 index 0000000..7e81c9c --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -0,0 +1,256 @@ +package com.casic.missiles.service.impl.status; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.mapper.status.EquipmentStatusApprovalMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.equipment.IEquipmentAttachmentService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.NumberGeneratorUtil; +import lombok.RequiredArgsConstructor; +import org.flowable.engine.runtime.ProcessInstance; +import org.springframework.stereotype.Service; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.PrefixCodeEnum.*; +import static com.casic.missiles.enums.equipment.StatusApprovalTypeEnum.*; + +/** + *

+ * 受检设备-状态维护登记表 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Service +@RequiredArgsConstructor +public class EquipmentStatusApprovalServiceImpl extends ServiceImpl implements IEquipmentStatusApprovalService { + + private final IEquipmentInfoService equipmentInfoService; + + private final IEquipmentAttachmentService attachmentService; + private final IBaseApprovalService baseApprovalService; + private final AbstractPermissionContext permissionContext; + + @Override + public Long saveOrUpdateApproval(EquipmentStatusApproval approvalForm) { + // 1. 生成统一编号 + if (StrUtil.isEmpty(approvalForm.getApprovalNo())) { + Long maxNo = this.baseMapper.selectMaxNo(approvalForm.getApprovalType()); + String prefix = getNoPrefix(approvalForm.getApprovalType()); + approvalForm.setApprovalNo(NumberGeneratorUtil.getContactNo(prefix, maxNo)); + } + // 2. 设置申请状态:草稿箱 + approvalForm.setApprovalStatus(ApprovalStatusEnum.DRAFT); + this.saveOrUpdate(approvalForm); + // 4. 返回申请记录id + return approvalForm.getId(); + } + + private String getNoPrefix(String approvalType) { + switch (approvalType) { + case SEAL: + return EQUIPMENT_STATUS_SEAL_PREFIX; + case UNSEAL: + return EQUIPMENT_STATUS_UNSEAL_PREFIX; + case DISABLE: + return EQUIPMENT_STATUS_DISABLE_PREFIX; + case SCRAP: + return EQUIPMENT_STATUS_SCRAP_PREFIX; + case DELAY: + return EQUIPMENT_STATUS_DELAY_PREFIX; + default: + return null; + } + } + + @Override + public void removeApproval(Long approvalId) { + EquipmentStatusApproval statusApproval = this.getById(approvalId); + if (StrUtil.isNotEmpty(statusApproval.getProcessId())) { + baseApprovalService.delete(statusApproval.getProcessId()); + } + this.removeById(approvalId); + } + + @Override + public ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest) { + EquipmentStatusApproval approvalInfo = this.getById(submitRequest.getId()); + if (StrUtil.isEmpty(approvalInfo.getProcessId())) { + ReturnDTO submitRes = baseApprovalService.processSubmit(submitRequest.getFormId(), submitRequest.getId()); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(submitRes.getCode())) { + return submitRes; + } + ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); + approvalInfo.setProcessId(processInstance.getProcessInstanceId()); + } else { + baseApprovalService.resubmit(approvalInfo.getProcessId()); + } + return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); + } + + @Override + public ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest) { + ReturnDTO res = baseApprovalService.revoke(revokeRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(revokeRequest.getId(), ApprovalStatusEnum.CANCELED); + } + + @Override + public ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest) { + return baseApprovalService.agree(agreeRequest); + } + + @Override + public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { + ReturnDTO res = baseApprovalService.reject(refuseRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(refuseRequest.getId(), ApprovalStatusEnum.FAILED); + } + + @Override + public void finishApproval(Long approvalId) { + EquipmentStatusApproval approval = this.getById(approvalId); + switch (approval.getApprovalType()) { + case SEAL: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.SEAL); + break; + case UNSEAL: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.UNSEAL); + break; + case DISABLE: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.DISABLE); + break; + case SCRAP: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.SCRAP); + break; + case DELAY: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.DELAY); + // 延长有效期 + equipmentInfoService.updateCertificateValid(approval.getEquipmentId(),approval.getDelayTime()); + break; + default: + break; + } + } + + private ReturnDTO updateApprovalStatus(EquipmentStatusApproval approvalInfo, String approvalStatus) { + approvalInfo.setApprovalStatus(approvalStatus); + boolean updateRes = this.updateById(approvalInfo); + return updateRes ? ReturnUtil.success() : ReturnUtil.failed("请求失败"); + } + + private ReturnDTO updateApprovalStatus(Serializable approvalId, String approvalStatus) { + EquipmentStatusApproval approvalInfo = this.getById(approvalId); + return this.updateApprovalStatus(approvalInfo, approvalStatus); + } + + @Override + public EquipmentStatusApproval approvalInfoDetail(Long approvalId) { + EquipmentStatusApproval approval = this.getById(approvalId); + approval.setEquipmentInfo(equipmentInfoService.getById(approval.getEquipmentId())); + approval.setAttachments(attachmentService.selectByEquipment(approval.getEquipmentId())); + return approval; + } + + @Override + public Page listPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval.approval_status", approvalStatus); + } + List list = this.baseMapper.listPage(page, queryWrapper); + page.setRecords(list); + return page; + } + + @Override + public Page toApprovalListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + List toBeApprovedList = baseApprovalService.getToBeApprovedList(formId); + if (CollUtil.isEmpty(toBeApprovedList)) { + return page; + } + + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + queryWrapper.in("id", toApprovalIds); + List list = this.baseMapper.listPage(page, queryWrapper); + for (EquipmentStatusApprovalListDTO approval : list) { + 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()); + } + } + page.setRecords(list); + return page; + } + + @Override + public Page approvedListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + List approvedIds = baseApprovalService.getAlreadyApprovalList(formId); + if (CollUtil.isEmpty(approvedIds)) { + return page; + } + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + queryWrapper.in("id", approvedIds); + List list = this.baseMapper.listPage(page, queryWrapper); + page.setRecords(list); + return page; + } + + @Override + public Page allPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List list = this.baseMapper.listScopePage(dataScope, page, queryWrapper); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(String approvalNo, String approvalType, String equipmentNo, String equipmentName) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(approvalNo)) { + queryWrapper.like("approval.approval_no", approvalNo); + } + if (StrUtil.isNotEmpty(approvalType)) { + queryWrapper.eq("approval.approval_type", approvalType); + } + if (StrUtil.isNotEmpty(equipmentNo)) { + queryWrapper.like("info.equipment_no", equipmentNo); + } + if (StrUtil.isNotEmpty(equipmentName)) { + queryWrapper.like("info.equipment_name", equipmentName); + } + return queryWrapper; + } +} 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 5667dea..7f0e36b 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 @@ -26,6 +26,10 @@ EQUIPMENT("设备台账模块", basePackage("com.casic.missiles.controller.equipment"), PathSelectors.any()), + + EQUIPMENT_STATUS("状态维护模块", + basePackage("com.casic.missiles.controller.status"), + PathSelectors.any()), // // // diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index ae4e125..44dcd67 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -8,6 +8,27 @@ String EQUIPMENT_SPECIAL_PREFIX = "tzsb"; + /** + * 设备状态申请:封存 + */ + String EQUIPMENT_STATUS_SEAL_PREFIX = "sbfcsq"; + /** + * 设备状态申请:启封 + */ + String EQUIPMENT_STATUS_UNSEAL_PREFIX = "sbqfsq"; + /** + * 设备状态申请:禁用 + */ + String EQUIPMENT_STATUS_DISABLE_PREFIX = "sbjysq"; + /** + * 设备状态申请:报废 + */ + String EQUIPMENT_STATUS_SCRAP_PREFIX = "sbbfsq"; + /** + * 设备状态申请:延用 + */ + String EQUIPMENT_STATUS_DELAY_PREFIX = "sbyysq"; + /*************系统设置模块**************/ String NOTICE_PREFIX = "tzgg"; String SIGN_PREFIX = "qmqz"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java new file mode 100644 index 0000000..0c88628 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/EquipmentStatusTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface EquipmentStatusTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封(在用) + */ + String UNSEAL= "0"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java new file mode 100644 index 0000000..8fc585f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/equipment/StatusApprovalTypeEnum.java @@ -0,0 +1,25 @@ +package com.casic.missiles.enums.equipment; + + +public interface StatusApprovalTypeEnum { + /** + * 设备状态申请:封存 + */ + String SEAL= "1"; + /** + * 设备状态申请:启封 + */ + String UNSEAL= "2"; + /** + * 设备状态申请:禁用 + */ + String DISABLE= "3"; + /** + * 设备状态申请:报废 + */ + String SCRAP= "4"; + /** + * 设备状态申请:延用 + */ + String DELAY= "5"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java index 03b8b0c..d9fbcb0 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -7,6 +7,8 @@ String EQUIPMENT_BEAN_NAME = "equipmentBean"; + String EQUIPMENT_STATUS_BEAN_NAME = "equipmentStatusBean"; + // String SUPPORT_BEAN_NAME = "equipmentSupportBean"; // // String MANAGING_BEAN_NAME = "equipmentManagingBean"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java index 122c83e..b60b8a1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -6,6 +6,7 @@ public enum AwareActionStatusEnum implements ActionStatusBeanEnum { EQUIPMENT_APPROVAL(EQUIPMENT_BEAN_NAME, ""), + EQUIPMENT_STATUS_APPROVAL(EQUIPMENT_STATUS_BEAN_NAME, ""), // EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), // EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), @@ -26,6 +27,12 @@ { //设备台账 put(ApplyFromIdEnum.EQUIPMENT_APPROVAL.getCode(), EQUIPMENT_APPROVAL); + //状态维护 + put(ApplyFromIdEnum.EQUIPMENT_SEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_UNSEALED_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_SCRAP_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DELAY_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); + put(ApplyFromIdEnum.EQUIPMENT_DISABLE_APPROVAL.getCode(),EQUIPMENT_STATUS_APPROVAL); // put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL.getCode(), EQUIPMENT_APPLY_USE); // put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL.getCode(), EQUIPMENT_APPLY_STOP); 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 cef615c..525cb15 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 @@ -6,6 +6,12 @@ */ EQUIPMENT_APPROVAL("sbtzgl", "2", "设备台账审批"), + EQUIPMENT_SEALED_APPROVAL("sbfcsq", "3", "设备封存申请"), + EQUIPMENT_UNSEALED_APPROVAL("sbqfsq", "3", "设备启封申请"), + EQUIPMENT_DISABLE_APPROVAL("sbjysq", "3", "设备禁用申请"), + EQUIPMENT_SCRAP_APPROVAL("sbbfsq", "3", "设备报废申请"), + EQUIPMENT_DELAY_APPROVAL("sbbfsq", "3", "设备延用申请"), + STANDARD_CHANGE_APPROVAL("sbglbzzzghsq", "3", "标准装置更换申请"), STANDARD_PAUSE_APPROVAL("sbglbzzzztsq", "3", "标准装置暂停申请"), STANDARD_REVERT_APPROVAL("sbglbzzzcxsq", "3", "标准装置撤销申请"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java index 448d651..cfc2eae 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/AutoCodeGenerator.java @@ -65,6 +65,7 @@ .packageConfig(builder -> builder // 指定父包名 .parent("com.casic.missiles") + .moduleName("status") .entity("model") .service("service") .serviceImpl("service.impl") diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..0f37e03 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,92 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * + * @param beforeObj + * @param afterObj + * @return 全部相同返回true,有不相同的返回false + */ + public static boolean fieldCompare(Object beforeObj, Object afterObj, List fields) { + Field[] beforeFields = beforeObj.getClass().getDeclaredFields(); + Field[] afterFields = afterObj.getClass().getDeclaredFields(); + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = afterFields[i].get(afterObj); + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)) { + return false; + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + + + } + } + } + + + return true; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 0c44a12..4638bed 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -14,6 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { - @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info_approval") Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java new file mode 100644 index 0000000..5d76181 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/status/EquipmentStatusApprovalMapper.java @@ -0,0 +1,33 @@ +package com.casic.missiles.mapper.status; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 Mapper 接口 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface EquipmentStatusApprovalMapper extends BaseMapper { + + @Select("SELECT IFNULL(max(RIGHT(approval_no, 12)), 0) from eqpt_equipment_status_approval where approval_type = #{approvalType}") + Long selectMaxNo(String approvalType); + + List listPage(@Param("page") Page page, @Param("ew")QueryWrapper queryWrapper); + + List listScopePage(@Param("datascope") DataScope dateScope, + @Param("page") Page page, + @Param("ew")QueryWrapper queryWrapper); + +} diff --git a/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml new file mode 100644 index 0000000..6d2d420 --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/status/EquipmentStatusApprovalMapper.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, approval_no, approval_name, approval_type, approval_status, create_user_id, create_user_name, create_time, update_time, equipment_id, perform_status, approval_reason, approval_address, approval_time, equipment_status, delay_time + + + + + + + diff --git a/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java new file mode 100644 index 0000000..676656f --- /dev/null +++ b/casic-metering-eqpt-api/src/main/java/com/casic/missiles/controller/status/EquipmentStatusApprovalController.java @@ -0,0 +1,160 @@ +package com.casic.missiles.controller.status; + +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.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +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; + +/** + *

+ * 受检设备-状态维护登记表 前端控制器 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Api(tags = "状态维护接口") +@Slf4j +@RestController +@RequestMapping("/status") +@RequiredArgsConstructor +public class EquipmentStatusApprovalController extends BaseController { + + private final IEquipmentStatusApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentStatusApproval approvalForm) { + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id) { + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest) { + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest) { + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest) { + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest) { + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id) { + EquipmentStatusApproval info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> listPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO> toApprovalListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "formId", value = "流程formId", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO> approvedListPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String equipmentType, + String formId) { + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page, approvalNo, approvalType, equipmentNo, equipmentName, formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiImplicitParams({ + @ApiImplicitParam(name = "approvalNo", value = "登记表编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalType", value = "申请类型", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentNo", value = "统一编号", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "equipmentName", value = "设备名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "approvalStatus", value = "申请状态", dataType = "String", paramType = "query") + }) + @ApiOperation("审批列表-全部") + @GetMapping("/approval/allPage") + @ResponseBody + public ReturnDTO> allPage(String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + Page page = PageFactory.defaultPage(); + page = approvalService.allPage(page, approvalNo, approvalType, equipmentNo, equipmentName, approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index 4a951f2..c069d25 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver +# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:11336/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203 diff --git a/casic-metering-eqpt-api/src/main/resources/config/application.yml b/casic-metering-eqpt-api/src/main/resources/config/application.yml index a6da2dc..afc69c9 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application.yml @@ -119,7 +119,7 @@ #作者 author: zhangyingjie #待生成对象表名 - table-name: eqpt_equipment_group_info,eqpt_equipment_group_relation,eqpt_equipment_special_certificate + table-name: eqpt_equipment_status_approval prefix: eqpt_ 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 index 5446273..827a8f1 100644 --- 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 @@ -105,7 +105,7 @@ /** * 意见类别 1正常意见 2拒绝意见 3驳回意见 */ - @ApiModelProperty("意见类别: 1正常意见 2拒绝意见 3驳回意见") + @ApiModelProperty("意见类别:0提交申请 1正常意见 2拒绝意见 3驳回意见 4取消申请") private String type; /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java new file mode 100644 index 0000000..bd361a8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/status/EquipmentStatusApprovalListDTO.java @@ -0,0 +1,63 @@ +package com.casic.missiles.dto.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Date; + +@Data +public class EquipmentStatusApprovalListDTO { + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("登记表编号") + private String approvalNo; + + @ApiModelProperty("登记表名称") + private String approvalName; + + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + private String approvalType; + + @ApiModelProperty("申请状态") + private String approvalStatus; + + @ApiModelProperty("申请状态") + private String approvalStatusName; + + @ApiModelProperty("申请人id") + private Integer createUserId; + + @ApiModelProperty("申请人姓名") + private String createUserName; + + @ApiModelProperty("申请时间") + private Date createTime; + + @ApiModelProperty("统一编号") + private String equipmentNo; + + @ApiModelProperty("设备名称") + private String equipmentName; + + @ApiModelProperty("型号规格") + private String model; + + @ApiModelProperty("所在单位id") + private Long companyId; + + @ApiModelProperty("所在单位名称") + private String companyName; + + @ApiModelProperty("使用单位id") + private Long deptId; + + @ApiModelProperty("任务id") + private String taskId; + + @ApiModelProperty("可选决策项") + private Integer decisionItem; +} 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 a5694cc..279911a 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 @@ -277,9 +277,9 @@ private String installLocationExt; /** - * 安装位置(多个用,拼接) + * 参试任务 */ - @ApiModelProperty("安装位置(多个用,拼接)") + @ApiModelProperty("参试任务") @TableField("test_task") private String testTask; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java new file mode 100644 index 0000000..b36a29c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/status/EquipmentStatusApproval.java @@ -0,0 +1,160 @@ +package com.casic.missiles.model.status; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 受检设备-状态维护登记表 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Data +@TableName("eqpt_equipment_status_approval") +public class EquipmentStatusApproval implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("主键") + @TableId("id") + private Long id; + + /** + * 登记表编号 + */ + @ApiModelProperty("登记表编号") + @TableField("approval_no") + private String approvalNo; + + /** + * 登记表名称 + */ + @ApiModelProperty("登记表名称") + @TableField("approval_name") + private String approvalName; + + /** + * 申请类型(1封存;2启封;3禁用;4报废;5延用) + */ + @ApiModelProperty("申请类型(1封存;2启封;3禁用;4报废;5延用)") + @TableField("approval_type") + private String approvalType; + + /** + * 申请状态 + */ + @ApiModelProperty("申请状态") + @TableField("approval_status") + private String approvalStatus; + + /** + * 申请人id + */ + @ApiModelProperty("申请人id") + @TableField("create_user_id") + private Long createUserId; + + /** + * 申请人姓名 + */ + @ApiModelProperty("申请人姓名") + @TableField("create_user_name") + private String createUserName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @TableField("update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 设备id + */ + @ApiModelProperty("设备id") + @TableField("equipment_id") + private Long equipmentId; + + /** + * 设备性能状态 + */ + @ApiModelProperty("设备性能状态") + @TableField("perform_status") + private String performStatus; + + /** + * 封存原因/启封原因/延用原因/禁用原因/报废原因 + */ + @ApiModelProperty("封存原因/启封原因/延用原因/禁用原因/报废原因") + @TableField("approval_reason") + private String approvalReason; + + /** + * 封存地点/存放地点/报废地点 + */ + @ApiModelProperty("封存地点/存放地点/报废地点") + @TableField("approval_address") + private String approvalAddress; + + /** + * 封存时间/存放时间/报废时间 + */ + @ApiModelProperty("封存时间/存放时间/报废时间") + @TableField("approval_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + + /** + * 启封设备状态 + */ + @ApiModelProperty("启封设备状态") + @TableField("equipment_status") + private String equipmentStatus; + + /** + * 预计延用时间 + */ + @ApiModelProperty("预计延用时间") + @TableField("delay_time") + private Date delayTime; + + @ApiModelProperty("流程实例id") + @TableField("process_id") + private String processId; + + @ApiModelProperty("设备信息,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private EquipmentInfo equipmentInfo; + + @ApiModelProperty("主附件信息列表,详情页使用,新建/编辑时不用传") + @TableField(exist = false) + private List attachments; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java new file mode 100644 index 0000000..71592b7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/processor/EquipmentStatusApprovalProcessor.java @@ -0,0 +1,32 @@ +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.status.IEquipmentStatusApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_BEAN_NAME; +import static com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum.EQUIPMENT_STATUS_BEAN_NAME; + +@Component(EQUIPMENT_STATUS_BEAN_NAME) +@RequiredArgsConstructor +public class EquipmentStatusApprovalProcessor implements NotifyEventPostProcessor { + + private final IEquipmentStatusApprovalService 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 a9b1f78..104f73e 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 @@ -9,7 +9,7 @@ import java.util.List; /** - * @Description: 公共审批功能service todo + * @Description: 公共审批功能service * @Author: wangpeng * @Date: 2022/12/21 11:31 */ @@ -35,5 +35,5 @@ List> approvalLog(String processId); - void failUpdate(String processId); + void resubmit(String processId); } 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 1d55dab..d4caf2d 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 @@ -5,6 +5,7 @@ import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; /** @@ -28,4 +29,8 @@ EquipmentInfo detail(Long equipmentId); + boolean updateEquipmentStatus(Long equipmentId,String usageStatus); + + boolean updateCertificateValid(Long equipmentId, Date certificateValid); + } 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 00fe71f..8e31bfc 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,8 +1,10 @@ package com.casic.missiles.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.model.auth.AuthUser; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.system.model.User; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.system.ISystemFlowFormService; +import liquibase.pro.packaged.S; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -74,7 +77,7 @@ } @Transactional - public ReturnDTO processSubmit(String formId, Long id){ + 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); @@ -89,7 +92,7 @@ //根据流程key(SystemFlowForm中的procDefId)获取流程id ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(flowForm.getProcDefId()).latestVersion().singleResult(); - if(Objects.isNull(processDefinition)){ + if (Objects.isNull(processDefinition)) { throw new BusinessException(BusinessExceptionEnum.FLOW_NO_JOIN_FLOWABLE); } @@ -212,26 +215,31 @@ 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(); + List tasks = taskService.createTaskQuery() + .processInstanceId(processId) + .active().list(); + if (CollUtil.isNotEmpty(tasks)) { + + tasks.forEach(task -> { + taskService.addComment(task.getId(), task.getProcessInstanceId(), "4", "取消申请"); + }); + + String defKey = tasks.get(0).getTaskDefinitionKey(); + //驳回至指定节点,现驳回到起始节点 + HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(processId) + .orderByHistoricTaskInstanceStartTime() + .asc().list().get(0); + + runtimeService.createChangeActivityStateBuilder() + .processInstanceId(processId) + .moveActivityIdTo(defKey, historicTaskInstance.getTaskDefinitionKey()) + .changeState(); + } + return ReturnUtil.success(); } @@ -256,6 +264,7 @@ /** * todo + * * @param processId * @return */ @@ -267,13 +276,13 @@ @Override @Transactional - public void failUpdate(String processId) { + public void resubmit(String processId) { //发起人审批通过 Task task = taskService.createTaskQuery() .processInstanceId(processId) .active() .singleResult(); - taskService.addComment(task.getId(),processId,"0","提交"); + taskService.addComment(task.getId(), processId, "0", "提交"); taskService.complete(task.getId()); //更新状态为审批中 runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); @@ -332,7 +341,7 @@ 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()); + List businessKeys = historicProcessInstances.stream().filter(i -> ObjectUtil.isNotEmpty(i) && ObjectUtil.isNotEmpty(i.getBusinessKey())).map(HistoricProcessInstance::getBusinessKey).collect(Collectors.toList()); return businessKeys; } @@ -362,8 +371,9 @@ List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processId) .orderByHistoricActivityInstanceStartTime() - .desc().list(); + .asc().list(); List hisFlowList = new ArrayList<>(); + List commentList = taskService.getProcessInstanceComments(processId); for (HistoricActivityInstance histIns : list) { //histIns.getTaskId()对应每个用户生成的任务id,暂时仅用于判断 非任务活动节点taskId为null if (StringUtils.isNotBlank(histIns.getTaskId())) { @@ -388,50 +398,60 @@ 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); - } +// 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); } } + hisFlowList = hisFlowList.stream().filter(i -> !(i.getTaskId().contains("root") && ObjectUtil.isEmpty(i.getFinishTime()))).collect(Collectors.toList()); + hisFlowList = hisFlowList.stream().filter(i -> !(!i.getTaskId().contains("root") && ObjectUtil.isNotEmpty(i.getFinishTime()) && ObjectUtil.isEmpty(i.getComment()))).collect(Collectors.toList()); + Map> resultMap = new HashMap<>(); //结果按taskId分组,并保证审批顺序 if (!CollectionUtils.isEmpty(hisFlowList)) { - resultMap = hisFlowList.stream().collect(Collectors.groupingBy(ApprovalLogResponse::getTaskId, LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); + resultMap = hisFlowList.stream().collect(Collectors.groupingBy(i -> String.format("%s_%s", i.getTaskId(), DateUtil.formatDateTime(i.getCreateTime())), + LinkedHashMap::new, Collectors.toCollection(ArrayList::new))); } + + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(processId) + .singleResult(); + String startUserId = historicProcessInstance.getStartUserId(); + User user = userMapper.selectById(Long.valueOf(startUserId)); + //对分组的taskId的列表进行整合,taskId是流程定义中自定义的,多实例的任务每个人的taskId相同 Map> finalResultMap = resultMap; List> resultList = new ArrayList<>(); + for (String key : resultMap.keySet()) { List approvalLogList = finalResultMap.get(key); + boolean cancel = false; 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)){ + if (!Objects.isNull(user)) { approvalLog.setAssigneeName(user.getName()); Dept dept = deptMapper.selectById(user.getDeptId()); approvalLog.setDeptId(user.getDeptId()); @@ -442,8 +462,25 @@ } else if (!Objects.isNull(approvalLog.getFinishTime())) { approvalLog.setApprovalStatus("审批完成");//可能是通过/拒绝/驳回,审批意见中可见 } + + if (ObjectUtil.isNotEmpty(approvalLog.getComment()) && "4".equals(approvalLog.getComment().getType())) { + cancel = true; + approvalLog.setAssigneeId(Long.valueOf(startUserId)); + if (!Objects.isNull(user)) { + approvalLog.setAssigneeName(user.getName()); + Dept dept = deptMapper.selectById(user.getDeptId()); + approvalLog.setDeptId(user.getDeptId()); + approvalLog.setDeptName(dept.getSimpleName()); + } + } } - resultList.add(approvalLogList); + + if(!cancel){ + resultList.add(approvalLogList); + }else { + resultList.add(Collections.singletonList(approvalLogList.get(0))); + } + } return resultList; 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 198f524..a09b638 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 @@ -23,6 +23,7 @@ import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.equipment.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.CasicBeanUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.RequiredArgsConstructor; import org.flowable.engine.runtime.ProcessInstance; @@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -60,7 +62,19 @@ @Override @Transactional public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { - // todo 删除申请,需要把设备信息回填? + // 删除申请:把设备信息回填 + if (DELETE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + BeanUtil.copyProperties(equipmentInfo, approvalForm); + } + // 编辑申请:不需要审批的字段直接生效 + if (UPDATE == approvalForm.getApprovalType()) { + EquipmentInfo equipmentInfo = equipmentInfoService.getById(approvalForm.getEquipmentId()); + this.simpleUpdate(approvalForm, equipmentInfo); + if (!needApproval(approvalForm, equipmentInfo)) { + return approvalForm.getId(); + } + } // 0. 生成设备id if (ObjectUtil.isEmpty(approvalForm.getEquipmentId())) { approvalForm.setEquipmentId(IdWorker.getId()); @@ -85,8 +99,23 @@ return approvalForm.getId(); } - private void resetProcessInstance(String processId) { - // todo 重置流程 + private boolean simpleUpdate(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + CasicBeanUtil.copySpecifyProperties(approvalForm, info, "checkOrganization", "checkDate", + "certificateValid", "meterIdentify", "usePosition", "directorName", "rfid", + "useSign", "installLocation", "installLocationExt", "testTask", "remarkExt"); + return equipmentInfoService.updateById(info); + } + + private boolean needApproval(EquipmentApprovalForm approvalForm, EquipmentInfo info) { + if (ObjectUtil.isNotEmpty(info)) { + return !CasicBeanUtil.fieldCompare(info, approvalForm, Arrays.asList( + "equipmentNo", "equipmentName", "equipmentType", "usageStatus", "level", + "productCountry", "manufacturer", "manufactureNo", "productDate", "unitPrice", + "purchaseDate", "model", "qualityCondition", "companyId", "deptId", "category", + "checkCycle", "remark", "instructionsFile" + )); + } + return true; } @Override @@ -112,7 +141,7 @@ ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); approvalInfo.setProcessId(processInstance.getProcessInstanceId()); } else { - baseApprovalService.failUpdate(approvalInfo.getProcessId()); + baseApprovalService.resubmit(approvalInfo.getProcessId()); } return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); } @@ -157,14 +186,14 @@ EquipmentInfoApproval approvalInfo = this.getById(approvalId); approvalInfo.setApprovalStatus(ApprovalStatusEnum.PASSED); this.updateById(approvalInfo); - if(ObjectUtil.isEmpty(approvalInfo)){ + if (ObjectUtil.isEmpty(approvalInfo)) { return; } - switch (approvalInfo.getApprovalType()){ + switch (approvalInfo.getApprovalType()) { case ADD: case UPDATE: EquipmentInfo equipmentInfo = new EquipmentInfo(); - BeanUtil.copyProperties(approvalInfo,equipmentInfo); + CasicBeanUtil.copySpecifyProperties(approvalInfo, equipmentInfo); equipmentInfo.setId(approvalInfo.getEquipmentId()); equipmentInfoService.saveOrUpdate(equipmentInfo); break; @@ -179,7 +208,7 @@ @Override public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); - if(ObjectUtil.isNotEmpty(info)){ + if (ObjectUtil.isNotEmpty(info)) { info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); info.setGroupInfos(groupInfoService.selectByEquipment(info.getEquipmentId())); @@ -190,8 +219,8 @@ @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); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval_status", approvalStatus); } return this.page(page, queryWrapper); } @@ -210,11 +239,11 @@ } List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); queryWrapper.in("id", toApprovalIds); - page = 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(); + 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()); } 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 dc27661..85b5b90 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 @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; @@ -16,6 +17,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; @@ -100,4 +102,22 @@ } return equipmentInfo; } + + @Override + public boolean updateEquipmentStatus(Long equipmentId,String usageStatus){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("usage_status",usageStatus); + return this.update(updateWrapper); + } + + @Override + public boolean updateCertificateValid(Long equipmentId, Date certificateValid) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",equipmentId); + updateWrapper.set("certificate_valid",certificateValid); + return this.update(updateWrapper); + } + + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java new file mode 100644 index 0000000..7e81c9c --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/status/EquipmentStatusApprovalServiceImpl.java @@ -0,0 +1,256 @@ +package com.casic.missiles.service.impl.status; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.equipment.EquipmentStatusTypeEnum; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.casic.missiles.mapper.status.EquipmentStatusApprovalMapper; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.equipment.IEquipmentAttachmentService; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import com.casic.missiles.service.status.IEquipmentStatusApprovalService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.utils.NumberGeneratorUtil; +import lombok.RequiredArgsConstructor; +import org.flowable.engine.runtime.ProcessInstance; +import org.springframework.stereotype.Service; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.casic.missiles.enums.PrefixCodeEnum.*; +import static com.casic.missiles.enums.equipment.StatusApprovalTypeEnum.*; + +/** + *

+ * 受检设备-状态维护登记表 服务实现类 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +@Service +@RequiredArgsConstructor +public class EquipmentStatusApprovalServiceImpl extends ServiceImpl implements IEquipmentStatusApprovalService { + + private final IEquipmentInfoService equipmentInfoService; + + private final IEquipmentAttachmentService attachmentService; + private final IBaseApprovalService baseApprovalService; + private final AbstractPermissionContext permissionContext; + + @Override + public Long saveOrUpdateApproval(EquipmentStatusApproval approvalForm) { + // 1. 生成统一编号 + if (StrUtil.isEmpty(approvalForm.getApprovalNo())) { + Long maxNo = this.baseMapper.selectMaxNo(approvalForm.getApprovalType()); + String prefix = getNoPrefix(approvalForm.getApprovalType()); + approvalForm.setApprovalNo(NumberGeneratorUtil.getContactNo(prefix, maxNo)); + } + // 2. 设置申请状态:草稿箱 + approvalForm.setApprovalStatus(ApprovalStatusEnum.DRAFT); + this.saveOrUpdate(approvalForm); + // 4. 返回申请记录id + return approvalForm.getId(); + } + + private String getNoPrefix(String approvalType) { + switch (approvalType) { + case SEAL: + return EQUIPMENT_STATUS_SEAL_PREFIX; + case UNSEAL: + return EQUIPMENT_STATUS_UNSEAL_PREFIX; + case DISABLE: + return EQUIPMENT_STATUS_DISABLE_PREFIX; + case SCRAP: + return EQUIPMENT_STATUS_SCRAP_PREFIX; + case DELAY: + return EQUIPMENT_STATUS_DELAY_PREFIX; + default: + return null; + } + } + + @Override + public void removeApproval(Long approvalId) { + EquipmentStatusApproval statusApproval = this.getById(approvalId); + if (StrUtil.isNotEmpty(statusApproval.getProcessId())) { + baseApprovalService.delete(statusApproval.getProcessId()); + } + this.removeById(approvalId); + } + + @Override + public ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest) { + EquipmentStatusApproval approvalInfo = this.getById(submitRequest.getId()); + if (StrUtil.isEmpty(approvalInfo.getProcessId())) { + ReturnDTO submitRes = baseApprovalService.processSubmit(submitRequest.getFormId(), submitRequest.getId()); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(submitRes.getCode())) { + return submitRes; + } + ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); + approvalInfo.setProcessId(processInstance.getProcessInstanceId()); + } else { + baseApprovalService.resubmit(approvalInfo.getProcessId()); + } + return updateApprovalStatus(approvalInfo, ApprovalStatusEnum.IN_APPROVED); + } + + @Override + public ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest) { + ReturnDTO res = baseApprovalService.revoke(revokeRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(revokeRequest.getId(), ApprovalStatusEnum.CANCELED); + } + + @Override + public ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest) { + return baseApprovalService.agree(agreeRequest); + } + + @Override + public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { + ReturnDTO res = baseApprovalService.reject(refuseRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(refuseRequest.getId(), ApprovalStatusEnum.FAILED); + } + + @Override + public void finishApproval(Long approvalId) { + EquipmentStatusApproval approval = this.getById(approvalId); + switch (approval.getApprovalType()) { + case SEAL: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.SEAL); + break; + case UNSEAL: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.UNSEAL); + break; + case DISABLE: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.DISABLE); + break; + case SCRAP: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.SCRAP); + break; + case DELAY: + equipmentInfoService.updateEquipmentStatus(approval.getEquipmentId(), EquipmentStatusTypeEnum.DELAY); + // 延长有效期 + equipmentInfoService.updateCertificateValid(approval.getEquipmentId(),approval.getDelayTime()); + break; + default: + break; + } + } + + private ReturnDTO updateApprovalStatus(EquipmentStatusApproval approvalInfo, String approvalStatus) { + approvalInfo.setApprovalStatus(approvalStatus); + boolean updateRes = this.updateById(approvalInfo); + return updateRes ? ReturnUtil.success() : ReturnUtil.failed("请求失败"); + } + + private ReturnDTO updateApprovalStatus(Serializable approvalId, String approvalStatus) { + EquipmentStatusApproval approvalInfo = this.getById(approvalId); + return this.updateApprovalStatus(approvalInfo, approvalStatus); + } + + @Override + public EquipmentStatusApproval approvalInfoDetail(Long approvalId) { + EquipmentStatusApproval approval = this.getById(approvalId); + approval.setEquipmentInfo(equipmentInfoService.getById(approval.getEquipmentId())); + approval.setAttachments(attachmentService.selectByEquipment(approval.getEquipmentId())); + return approval; + } + + @Override + public Page listPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus) { + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + if (StrUtil.isNotEmpty(approvalStatus)) { + queryWrapper.eq("approval.approval_status", approvalStatus); + } + List list = this.baseMapper.listPage(page, queryWrapper); + page.setRecords(list); + return page; + } + + @Override + public Page toApprovalListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + List toBeApprovedList = baseApprovalService.getToBeApprovedList(formId); + if (CollUtil.isEmpty(toBeApprovedList)) { + return page; + } + + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + queryWrapper.in("id", toApprovalIds); + List list = this.baseMapper.listPage(page, queryWrapper); + for (EquipmentStatusApprovalListDTO approval : list) { + 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()); + } + } + page.setRecords(list); + return page; + } + + @Override + public Page approvedListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + List approvedIds = baseApprovalService.getAlreadyApprovalList(formId); + if (CollUtil.isEmpty(approvedIds)) { + return page; + } + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + queryWrapper.in("id", approvedIds); + List list = this.baseMapper.listPage(page, queryWrapper); + page.setRecords(list); + return page; + } + + @Override + public Page allPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId) { + QueryWrapper queryWrapper = commonQuery(approvalNo, approvalType, equipmentNo, equipmentName); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List list = this.baseMapper.listScopePage(dataScope, page, queryWrapper); + page.setRecords(list); + return page; + } + + private QueryWrapper commonQuery(String approvalNo, String approvalType, String equipmentNo, String equipmentName) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(approvalNo)) { + queryWrapper.like("approval.approval_no", approvalNo); + } + if (StrUtil.isNotEmpty(approvalType)) { + queryWrapper.eq("approval.approval_type", approvalType); + } + if (StrUtil.isNotEmpty(equipmentNo)) { + queryWrapper.like("info.equipment_no", equipmentNo); + } + if (StrUtil.isNotEmpty(equipmentName)) { + queryWrapper.like("info.equipment_name", equipmentName); + } + return queryWrapper; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/status/IEquipmentStatusApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/status/IEquipmentStatusApprovalService.java new file mode 100644 index 0000000..a71e852 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/status/IEquipmentStatusApprovalService.java @@ -0,0 +1,56 @@ +package com.casic.missiles.service.status; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.status.EquipmentStatusApprovalListDTO; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.status.EquipmentStatusApproval; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 受检设备-状态维护登记表 服务类 + *

+ * + * @author zhangyingjie + * @since 2023-08-07 + */ +public interface IEquipmentStatusApprovalService extends IService { + + + Long saveOrUpdateApproval(EquipmentStatusApproval approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + /** + * 通过审批 + * + * @param approvalId + */ + void finishApproval(Long approvalId); + + EquipmentStatusApproval approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String approvalStatus); + + Page toApprovalListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId); + + Page approvedListPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId); + + Page allPage(Page page, String approvalNo, String approvalType, String equipmentNo, String equipmentName, String formId); + +}