Lius
20 小时以前 42130546e4f61741305dbaba02fc6f8692116a7a
三保变更流程审批
已修改5个文件
318 ■■■■■ 文件已修改
db/430设备管理数据库设计.pdma.json 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/ThirdMaintenanceChangeReasonEnum.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceChange.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamThirdMaintenanceChangeRequest.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/430É豸¹ÜÀíÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -2,9 +2,9 @@
  "name": "430设备管理数据库设计",
  "describe": "描述设备管理数据库设计文档",
  "avatar": "",
  "version": "4.9.2",
  "version": "4.9.4",
  "createdTime": "2025-3-10 16:38:19",
  "updatedTime": "2025-7-22 14:27:53",
  "updatedTime": "2025-7-23 11:43:01",
  "dbConns": [],
  "profile": {
    "default": {
@@ -10132,6 +10132,42 @@
          "id": "D81F9B85-1C0C-4B24-B8F3-E12C13E62501"
        },
        {
          "defKey": "equipment_manager_signature_result",
          "defName": "主管领导签字结果",
          "comment": "",
          "type": "NVARCHAR",
          "len": 64,
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "",
          "id": "F8C4D679-08C0-407E-B321-3B1FC289237B"
        },
        {
          "defKey": "equipment_manager_comment",
          "defName": "主管领导意见",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
          "id": "EB648C12-9872-4CBF-89D9-A46EE19D3F02"
        },
        {
          "defKey": "depart_manager_signature",
          "defName": "部门领导签字",
          "comment": "根据延保原因类型区分不同的人审批",
@@ -10166,6 +10202,24 @@
          "extProps": {},
          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
          "id": "42DF30B4-04DD-4B40-98A6-C4FF34927AEA"
        },
        {
          "defKey": "depart_manager_signature_result",
          "defName": "部门领导签字结果",
          "comment": "",
          "type": "NVARCHAR",
          "len": 64,
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "",
          "id": "55FCD810-CE0F-4481-8A5E-5DCFA886CEC6"
        },
        {
          "defKey": "depart_manager_comment",
@@ -10222,6 +10276,24 @@
          "id": "9FEDFFD2-B600-461D-8D7C-4F38A7621502"
        },
        {
          "defKey": "production_support_signature_result",
          "defName": "生产保障部领导签字结果",
          "comment": "",
          "type": "NVARCHAR",
          "len": 64,
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "",
          "id": "E56812A5-062D-480B-A6A9-EF4E4B926D56"
        },
        {
          "defKey": "production_support_comment",
          "defName": "生产保障部领导意见",
          "comment": "",
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/ThirdMaintenanceChangeReasonEnum.java
@@ -7,4 +7,14 @@
    EQUIPMENT_MAJOR, //设备大修、项修
    EQUIPMENT_RETROFITTING, //设备改造
    ;
    public static ThirdMaintenanceChangeReasonEnum getInstance(String code) {
        ThirdMaintenanceChangeReasonEnum[] values = ThirdMaintenanceChangeReasonEnum.values();
        for (ThirdMaintenanceChangeReasonEnum value : values) {
            if (value.name().equals(code)) {
                return value;
            }
        }
        return null;
    }
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceChange.java
@@ -122,6 +122,16 @@
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date equipmentManagerSignatureTime;
    /**主管领导签字结果*/
    @ApiModelProperty(value = "主管领导签字结果")
    @Dict(dicCode = "approve_reject")
    private String equipmentManagerSignatureResult;
    /**
     * éƒ¨é—¨é¢†å¯¼æ„è§
     */
    @Excel(name = "主管领导意见", width = 15)
    @ApiModelProperty(value = "主管领导意见")
    private String equipmentManagerComment;
    /**
     * éƒ¨é—¨é¢†å¯¼ç­¾å­—;根据延保原因类型区分不同的人审批
     */
@@ -137,6 +147,10 @@
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date departManagerSignatureTime;
    /**部门领导签字结果*/
    @ApiModelProperty(value = "部门领导签字结果")
    @Dict(dicCode = "approve_reject")
    private String departManagerSignatureResult;
    /**
     * éƒ¨é—¨é¢†å¯¼æ„è§
     */
@@ -158,6 +172,10 @@
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date productionSupportSignatureTime;
    /**生产保障部领导签字结果*/
    @ApiModelProperty(value = "生产保障部领导签字结果")
    @Dict(dicCode = "approve_reject")
    private String productionSupportSignatureResult;
    /**
     * ç”Ÿäº§ä¿éšœéƒ¨é¢†å¯¼æ„è§
     */
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamThirdMaintenanceChangeRequest.java
@@ -1,13 +1,18 @@
package org.jeecg.modules.eam.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * @Author: Lius
@@ -27,10 +32,50 @@
     */
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * å·¥å•号
     */
    @ApiModelProperty(value = "工单号")
    private String orderNum;
    private String orderId;
    /**
     * ç”³è¯·ç±»åž‹;报废、延保
     */
    @ApiModelProperty(value = "申请类型;报废、延保")
    private String applyCategory;
    /**
     * å»¶ä¿åŽŸå› ç±»åž‹;生产任务、设备故障、报废、大修项修、搬迁
     */
    @ApiModelProperty(value = "延保原因类型;生产任务、设备故障、报废、大修项修、搬迁")
    private String applyReasonType;
    /**
     * å»¶ä¿(变更)原因
     */
    @ApiModelProperty(value = "延保(变更)原因")
    private String applyReason;
    /**
     * å»¶è¿Ÿä¿å…»æ—¥æœŸ
     */
    @ApiModelProperty(value = "延迟保养日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date deferredMaintenanceDate;
    /**主管领导签字结果*/
    @ApiModelProperty(value = "主管领导签字结果")
    private String equipmentManagerSignatureResult;
    /**主管领导意见*/
    @ApiModelProperty(value = "主管领导意见")
    private String equipmentManagerComment;
    /**部门领导意见*/
    @ApiModelProperty(value = "部门领导意见")
    private String departManagerComment;
    /**部门领导签字结果*/
    @ApiModelProperty(value = "部门领导签字结果")
    private String departManagerSignatureResult;
    /**生产保障部领导签字结果*/
    @ApiModelProperty(value = "生产保障部领导签字结果")
    private String productionSupportSignatureResult;
    /**生产保障部领导意见*/
    @ApiModelProperty(value = "生产保障部领导意见")
    private String productionSupportComment;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java
@@ -251,6 +251,8 @@
            variables.put("organization", applyReasonTypeText);
            variables.put("comment", applyReasonTypeText);
        }
        variables.put("proofreading", true);
        variables.put("NextAssignee", userApprovalList);
        Result<?> result = flowDefinitionService.startProcessInstanceByKey("third_maintenance_change", variables);
        if(result == null || !result.isSuccess()) {
            throw new JeecgBootException("启动流程失败!");
@@ -300,13 +302,13 @@
        }
        // è®¾ç½®æµç¨‹å˜é‡
        setupProcessVariables(request, order, user, equipment);
        setupProcessVariables(request, entity, user, equipment);
        // å®Œæˆæµç¨‹ä»»åŠ¡
        Result result = flowTaskService.complete(request);
        // æ ¹æ®ä»»åŠ¡å®Œæˆç»“æžœæ›´æ–°å·¥å•çŠ¶æ€
        updateOrderStatus(result, request, order, user);
        updateOrderStatus(result, request, entity, order, user);
        //更新工单信息
        this.getBaseMapper().updateById(entity);
@@ -316,15 +318,168 @@
    /**
     * è®¾ç½®æµç¨‹å˜é‡
     */
    private void setupProcessVariables(EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceOrder order, LoginUser user, EamEquipment equipment) {
    private void setupProcessVariables(EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceChange entity, LoginUser user, EamEquipment equipment) {
        //流程变量
        Map<String, Object> values = new HashMap<>();
        List<String> userApprovalList;
        List<UserSelector> userSelectors;
        ThirdMaintenanceChangeStatusEnum status = ThirdMaintenanceChangeStatusEnum.getInstance(entity.getChangeStatus());
        switch (status) {
            case EQUIPMENT_MANAGER_SIGNING:
                // ä½¿ç”¨å•位主管室级领导审核
                values.put("dataId", entity.getId());
                if(StringUtils.isBlank(request.getEquipmentManagerComment())) {
                    values.put("organization", "三保工单变更使用单位主管室级领导");
                    values.put("comment", "三保工单变更使用单位主管室级领导");
                    request.setComment("三保工单变更部门领导审核");
                } else {
                    values.put("organization", request.getEquipmentManagerComment());
                    values.put("comment", request.getEquipmentManagerComment());
                    request.setComment(request.getEquipmentManagerComment());
                }
                if (BusinessCodeConst.APPROVED.equals(request.getEquipmentManagerSignatureResult())) {
                    values.put("confirmation", request.getEquipmentManagerSignatureResult());
                    ThirdMaintenanceChangeReasonEnum applyReasonType = ThirdMaintenanceChangeReasonEnum.getInstance(request.getApplyReasonType());
                    switch (applyReasonType) {
                        case PRODUCTION_WORK_ORDER_EXPEDITED:
                            //生产任务
                            userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0012);
                            if (CollectionUtil.isEmpty(userSelectors)) {
                                throw new JeecgBootException("设备未分配给生产指挥部室级领导,无法进入下级审批!");
                            }
                            break;
                        case EQUIPMENT_BREAKDOWN_REPAIR:
                            //设备故障
                            userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0013);
                            if (CollectionUtil.isEmpty(userSelectors)) {
                                throw new JeecgBootException("设备未分配给维修区长,无法进入下级审批!");
                            }
                            break;
                        case EQUIPMENT_SCRAPPED:
                            //设备报废
                            userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0014);
                            if (CollectionUtil.isEmpty(userSelectors)) {
                                throw new JeecgBootException("设备未分配给资产管理部,无法进入下级审批!");
                            }
                            break;
                        case EQUIPMENT_MAJOR:
                            //设备大修、项修
                            userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0016);
                            if (CollectionUtil.isEmpty(userSelectors)) {
                                throw new JeecgBootException("设备未分配给运维商务室主任,无法进入下级审批!");
                            }
                            break;
                        case EQUIPMENT_RETROFITTING:
                            //设备搬迁、改造
                            userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0015);
                            if (CollectionUtil.isEmpty(userSelectors)) {
                                throw new JeecgBootException("设备未分配给项目主管部,无法进入下级审批!");
                            }
                            break;
                        default:
                            throw new JeecgBootException("变更申请原因无法识别,审批失败!");
                    }
                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("NextAssignee", userApprovalList);
                } else {
                    values.put("confirmation", request.getEquipmentManagerSignatureResult());
                }
                break;
            case DEPART_MANAGER_SIGNING:
                //部门领导审核
                values.put("confirmation", request.getDepartManagerSignatureResult());
                values.put("dataId", entity.getId());
                if(StringUtils.isBlank(request.getDepartManagerComment())) {
                    values.put("organization", "三保工单变更部门领导审核");
                    values.put("comment", "三保工单变更部门领导审核");
                    request.setComment("三保工单变更部门领导审核");
                } else {
                    values.put("organization", request.getDepartManagerComment());
                    values.put("comment", request.getDepartManagerComment());
                    request.setComment(request.getDepartManagerComment());
                }
                if (BusinessCodeConst.APPROVED.equals(request.getDepartManagerSignatureResult())) {
                    // èŽ·å–ä¸‹ä¸€æ­¥æ‰§è¡Œäºº
                    userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0017);
                    if (CollectionUtil.isEmpty(userSelectors)) {
                        throw new JeecgBootException("设备未分配给运维管理室室主任,无法进入下级审批!");
                    }
                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("NextAssignee", userApprovalList);
                } else {
                    values.put("confirmation", request.getDepartManagerSignatureResult());
                }
                break;
            case PRODUCTION_SUPPORT_SIGNING:
                // ç»´ä¿®å®¤ä¸»ä»»ç­¾å­—
                values.put("dataId", entity.getId());
                if(StringUtils.isBlank(request.getDepartManagerComment())) {
                    values.put("organization", "三保工单变更生产保障部审核");
                    values.put("comment", "三保工单变更生产保障部审核");
                    request.setComment("三保工单变更生产保障部审核");
                } else {
                    values.put("organization", request.getProductionSupportComment());
                    values.put("comment", request.getProductionSupportComment());
                    request.setComment(request.getProductionSupportComment());
                }
                break;
        }
        request.setValues(values);
    }
    /**
     * æ›´æ–°å·¥å•状态
     */
    private void updateOrderStatus(Result result, EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceOrder order, LoginUser user) {
    private void updateOrderStatus(Result result, EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceChange entity, EamThirdMaintenanceOrder order, LoginUser user) {
        if (result.isSuccess()) {
            ThirdMaintenanceChangeStatusEnum status = ThirdMaintenanceChangeStatusEnum.getInstance(entity.getChangeStatus());
            switch (status) {
                case EQUIPMENT_MANAGER_SIGNING:
                    // è®¾ç½®entity
                    entity.setEquipmentManagerSignature(user.getUsername());
                    entity.setEquipmentManagerSignatureTime(new Date());
                    entity.setEquipmentManagerComment(request.getEquipmentManagerComment());
                    entity.setEquipmentManagerSignatureResult(request.getEquipmentManagerSignatureResult());
                    if(BusinessCodeConst.APPROVED.equals(request.getEquipmentManagerSignatureResult())) {
                        //通过
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.DEPART_MANAGER_SIGNING.name());
                    } else {
                        //驳回
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name());
                    }
                    break;
                case DEPART_MANAGER_SIGNING:
                    entity.setDepartManagerSignature(user.getUsername());
                    entity.setDepartManagerSignatureTime(new Date());
                    entity.setDepartManagerComment(request.getDepartManagerComment());
                    entity.setDepartManagerSignatureResult(request.getDepartManagerSignatureResult());
                    if(BusinessCodeConst.APPROVED.equals(request.getDepartManagerSignatureResult())) {
                        // é€šè¿‡
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.PRODUCTION_SUPPORT_SIGNING.name());
                    } else {
                        //驳回
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name());
                    }
                    break;
                case PRODUCTION_SUPPORT_SIGNING:
                    entity.setProductionSupportSignature(user.getUsername());
                    entity.setProductionSupportSignatureTime(new Date());
                    entity.setProductionSupportSignatureResult(request.getProductionSupportSignatureResult());
                    entity.setProductionSupportComment(request.getProductionSupportComment());
                    if(BusinessCodeConst.APPROVED.equals(request.getProductionSupportSignatureResult())) {
                        //通过
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.COMPLETED.name());
                        order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name());
                        order.setMaintenanceDate(entity.getDeferredMaintenanceDate());
                        thirdMaintenanceOrderService.updateById(order);
                    }else {
                        //驳回
                        entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name());
                    }
                    break;
            }
        }
    }
    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {