cuikaidong
2025-05-23 23a41447d547a32ec67925b970162e91730e2561
封存启封功能完善,启封,编辑功能
已修改9个文件
603 ■■■■■ 文件已修改
db/数据库产品化设计.pdma.json 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/Êý¾Ý¿â²úÆ·»¯Éè¼Æ.pdma.json
@@ -4,7 +4,7 @@
  "avatar": "",
  "version": "4.9.2",
  "createdTime": "2025-3-10 16:38:19",
  "updatedTime": "2025-5-22 15:02:23",
  "updatedTime": "2025-5-23 10:09:30",
  "dbConns": [],
  "profile": {
    "default": {
@@ -12848,6 +12848,150 @@
          "extProps": {},
          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
          "id": "167FF00A-3AB4-4A25-A0FA-922481A35D9F"
        },
        {
          "defKey": "approval_deal_type",
          "defName": "审核类型",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
          "id": "5AE732AE-B9E0-47C0-A565-FA1EBC7940D3"
        },
        {
          "defKey": "approval_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": "295D3DAE-28E0-4DCE-A0A0-839F87F534F4"
        },
        {
          "defKey": "unseal_report_user",
          "defName": "启封申请人",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
          "id": "FAE53488-7B2A-4F16-8CBF-DB9B774DF33F"
        },
        {
          "defKey": "unseal_reason",
          "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": "4DDCB07F-1FEC-4A22-84BD-A45D7C7925B2"
        },
        {
          "defKey": "unseal_approval_user",
          "defName": "启封审核人",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
          "id": "68C346D8-EA2A-4E46-A4B5-16787C79ECBA"
        },
        {
          "defKey": "unseal_approval_time",
          "defName": "启封审核时间",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098",
          "extProps": {},
          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
          "id": "51A953E1-6435-413B-AADF-8D695130618D"
        },
        {
          "defKey": "unseal_approval_deal_type",
          "defName": "启封审核类型",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
          "id": "A171B3A4-A12B-4A45-B064-BA63BD77B8EF"
        },
        {
          "defKey": "unseal_approval_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": "DF17CC8C-26B1-4627-A980-C1E13C787A02"
        }
      ],
      "correlations": [],
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java
@@ -8,6 +8,7 @@
    WAIT_SUBMIT, //待提交
    WAIT_CHECK, //待审核
    SEALED, //已封存
    WAIT_UNSEALING_AUDIT, //待启封审核
    COMPLETE, //已完成
    ;
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java
@@ -194,7 +194,7 @@
    }
    /**
     * ç¼–辑
     * å®¡æ‰¹
     *
     * @param request
     * @return
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java
@@ -18,6 +18,7 @@
import org.jeecg.modules.eam.constant.EquipmentSealUpStatusEnum;
import org.jeecg.modules.eam.entity.EamEquipmentSealUp;
import org.jeecg.modules.eam.request.EamEquipmentSealUpQuery;
import org.jeecg.modules.eam.request.EamEquipmentSealUpRequest;
import org.jeecg.modules.eam.service.IEamEquipmentSealUpService;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -175,13 +176,30 @@
    }
    /**
     * å¯å°
     *
     * @param id
     * @return
     */
    @AutoLog(value = "设备启封-启封")
    @ApiOperation(value = "设备启封-启封", notes = "设备启封-启封")
    @GetMapping(value = "/unseal")
    public Result<?> unseal(@RequestParam(name = "id", required = true) String id) {
        boolean b = eamEquipmentSealUpService.unseal(id);
        if (!b) {
            return Result.error("操作失败!");
        }
        return Result.OK("操作成功!");
    }
    /**
     * æäº¤
     *
     * @param id
     * @return
     */
    @AutoLog(value = "设备封存启封-提交")
    @ApiOperation(value = "设备封存启封-提交", notes = "设备封存启封-提交")
    @AutoLog(value = "设备封存-提交")
    @ApiOperation(value = "设备封存-提交", notes = "设备封存-提交")
    @GetMapping(value = "/submit")
    public Result<?> submit(@RequestParam(name = "id", required = true) String id) {
        boolean b = eamEquipmentSealUpService.submit(id);
@@ -190,4 +208,24 @@
        }
        return Result.OK("操作成功!");
    }
    /**
     * ç¼–辑
     *
     * @param request
     * @return
     */
    @AutoLog(value = "设备借出归还-审批流")
    @ApiOperation(value = "设备借出归还-审批流", notes = "设备借出归还-审批流")
    @RequestMapping(value = "/approval", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> approval(@RequestBody EamEquipmentSealUpRequest request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
        }
        EamEquipmentSealUp entity = eamEquipmentSealUpService.approval(request);
        if (entity == null) {
            return Result.error("操作失败!");
        }
        return Result.OK("操作成功!");
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java
@@ -16,6 +16,7 @@
import java.io.Serializable;
import java.util.Date;
/**
 * @Description: è®¾å¤‡å°å­˜å¯å°
 * @Author: jeecg-boot
@@ -29,73 +30,154 @@
@ApiModel(value="eam_equipment_seal_up对象", description="设备封存启封")
public class EamEquipmentSealUp implements Serializable {
    
    /**主键*/
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    /**
     * åˆ›å»ºäºº
     */
    @Excel(name = "创建人", width = 15)
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    /**
     * æ›´æ–°äºº
     */
    @Excel(name = "更新人", width = 15)
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    /**
     * æ›´æ–°æ—¶é—´
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    /**
     * åˆ é™¤æ ‡è®°
     */
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**设备ID*/
    /**
     * è®¾å¤‡ID
     */
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**单据号*/
    /**
     * å•据号
     */
    @Excel(name = "单据号", width = 15)
    @ApiModelProperty(value = "单据号")
    private String code;
    /**申请人*/
    /**
     * ç”³è¯·äºº
     */
    @Excel(name = "申请人", width = 15)
    @ApiModelProperty(value = "申请人")
    @Dict(dicCode = "sys_user, realname, username")
    private String reportUser;
    /**封存开始时间*/
    /**
     * å°å­˜å¼€å§‹æ—¶é—´
     */
    @ApiModelProperty(value = "封存开始时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sealStartTime;
    /**封存结束时间*/
    /**
     * å°å­˜ç»“束时间
     */
    @ApiModelProperty(value = "封存结束时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sealEndTime;
    /**封存原因*/
    /**
     * å°å­˜åŽŸå› 
     */
    @Excel(name = "封存原因", width = 15)
    @ApiModelProperty(value = "封存原因")
    private String sealUpReason;
    /**封存状态*/
    /**
     * å°å­˜çŠ¶æ€
     */
    @Excel(name = "封存状态", width = 15)
    @ApiModelProperty(value = "封存状态")
    @Dict(dicCode = "equipment_seal_up_status")
    private String sealStatus;
    /**审核人*/
    /**
     * å®¡æ ¸äºº
     */
    @Excel(name = "审核人", width = 15)
    @ApiModelProperty(value = "审核人")
    private String approvalUser;
    /**审核时间*/
    /**
     * å®¡æ ¸æ—¶é—´
     */
    @ApiModelProperty(value = "审核时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;
    /**备注*/
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * å®¡æ ¸ç±»åž‹
     */
    @Excel(name = "审核类型", width = 15)
    @ApiModelProperty(value = "审核类型")
    private String approvalDealType;
    /**
     * å®¡æ ¸æ„è§
     */
    @Excel(name = "审核意见", width = 15)
    @ApiModelProperty(value = "审核意见")
    private String approvalComment;
    /**
     * å¯å°ç”³è¯·äºº
     */
    @Excel(name = "启封申请人", width = 15)
    @ApiModelProperty(value = "启封申请人")
    private String unsealReportUser;
    /**
     * å¯å°åŽŸå› 
     */
    @Excel(name = "启封原因", width = 15)
    @ApiModelProperty(value = "启封原因")
    private String unsealReason;
    /**
     * å¯å°å®¡æ ¸äºº
     */
    @Excel(name = "启封审核人", width = 15)
    @ApiModelProperty(value = "启封审核人")
    private String unsealApprovalUser;
    /**
     * å¯å°å®¡æ ¸æ—¶é—´
     */
    @Excel(name = "启封审核时间", width = 15)
    @ApiModelProperty(value = "启封审核时间")
    private Date unsealApprovalTime;
    /**
     * å¯å°å®¡æ ¸ç±»åž‹
     */
    @Excel(name = "启封审核类型", width = 15)
    @ApiModelProperty(value = "启封审核类型")
    private String unsealApprovalDealType;
    /**
     * å¯å°å®¡æ ¸æ„è§
     */
    @Excel(name = "启封审核意见", width = 15)
    @ApiModelProperty(value = "启封审核意见")
    private String unsealApprovalComment;
    //列表展示
    @TableField(exist = false)
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java
@@ -1,17 +1,12 @@
package org.jeecg.modules.eam.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
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;
@@ -28,59 +23,138 @@
@Accessors(chain = true)
public class EamEquipmentSealUpRequest extends FlowTaskVo implements Serializable {
    
    /**主键*/
    /**
     * ä¸»é”®
     */
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    /**
     * åˆ›å»ºäºº
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    /**
     * æ›´æ–°äºº
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    /**
     * æ›´æ–°æ—¶é—´
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**设备ID*/
    /**
     * è®¾å¤‡ID
     */
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**单据号*/
    /**
     * å•据号
     */
    @ApiModelProperty(value = "单据号")
    private String code;
    /**申请人*/
    /**
     * ç”³è¯·äºº
     */
    @ApiModelProperty(value = "申请人")
    private String reportUser;
    /**封存开始时间*/
    /**
     * å°å­˜å¼€å§‹æ—¶é—´
     */
    @ApiModelProperty(value = "封存开始时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sealStartTime;
    /**封存结束时间*/
    /**
     * å°å­˜ç»“束时间
     */
    @ApiModelProperty(value = "封存结束时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sealEndTime;
    /**封存原因*/
    /**
     * å°å­˜åŽŸå› 
     */
    @ApiModelProperty(value = "封存原因")
    private String sealUpReason;
    /**封存状态*/
    /**
     * å°å­˜çŠ¶æ€
     */
    @ApiModelProperty(value = "封存状态")
    @Dict(dicCode = "equipment_seal_up_status")
    private String sealStatus;
    /**审核人*/
    /**
     * å®¡æ ¸äºº
     */
    @ApiModelProperty(value = "审核人")
    private String approvalUser;
    /**审核时间*/
    /**
     * å®¡æ ¸æ—¶é—´
     */
    @ApiModelProperty(value = "审核时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;
    /**备注*/
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * å®¡æ ¸ç±»åž‹
     */
    @ApiModelProperty(value = "审核类型")
    @Dict(dicCode = "approved_rejected")
    private String approvalDealType;
    /**
     * å®¡æ ¸æ„è§
     */
    @ApiModelProperty(value = "审核意见")
    private String approvalComment;
    /**
     * å¯å°ç”³è¯·äºº
     */
    @ApiModelProperty(value = "启封申请人")
    private String unsealReportUser;
    /**
     * å¯å°åŽŸå› 
     */
    @ApiModelProperty(value = "启封原因")
    private String unsealReason;
    /**
     * å¯å°å®¡æ ¸äºº
     */
    @ApiModelProperty(value = "启封审核人")
    private String unsealApprovalUser;
    /**
     * å¯å°å®¡æ ¸æ—¶é—´
     */
    @ApiModelProperty(value = "启封审核时间")
    private Date unsealApprovalTime;
    /**
     * å¯å°å®¡æ ¸ç±»åž‹
     */
    @ApiModelProperty(value = "启封审核类型")
    @Dict(dicCode = "approved_rejected")
    private String unsealApprovalDealType;
    /**
     * å¯å°å®¡æ ¸æ„è§
     */
    @ApiModelProperty(value = "启封审核意见")
    private String unsealApprovalComment;
    //列表展示
    private String equipmentCode;
    private String equipmentName;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java
@@ -41,6 +41,14 @@
    boolean editSealUp(EamEquipmentSealUp request);
    /**
     * å¯å°ç”³è¯·
     *
     * @param id
     * @return
     */
    boolean unseal(String id);
    /**
     * æäº¤ç”³è¯·
     *
     * @param id
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
@@ -301,6 +301,9 @@
                } else {
                    //设置entity
                    entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name());
                    // ä¿®æ”¹è®¾å¤‡çŠ¶æ€
                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
                    eamEquipmentService.updateById(equipment);
                }
                break;
            // å½’还
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,6 +11,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
@@ -21,6 +23,7 @@
import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum;
import org.jeecg.modules.eam.constant.EquipmentSealUpStatusEnum;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import org.jeecg.modules.eam.entity.EamEquipmentSealUp;
import org.jeecg.modules.eam.mapper.EamEquipmentSealUpMapper;
import org.jeecg.modules.eam.request.EamEquipmentSealUpQuery;
@@ -174,12 +177,57 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean unseal(String id) {
        EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(id);
        if (entity == null) {
            throw new JeecgBootException("要提交的数据不存在,请刷新重试!");
        }
        if (!EquipmentSealUpStatusEnum.SEALED.name().equals(entity.getSealStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
        EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            throw new JeecgBootException("当前用户无法编辑封存记录!");
        }
        //启动审批流程
        flowCommonService.initActBusiness("工单号:" + entity.getCode() + ";设备编号: " + equipment.getEquipmentCode() + ";进行设备启封",
                entity.getId(), "IEamEquipmentSealUpService", "equipment_unseal", null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", entity.getId());
        variables.put("organization", "新增启封默认启动流程");
        variables.put("comment", "新增启封默认启动流程");
        variables.put("proofreading", true);
        // åˆ†é…ç»™è®¾å¤‡ç®¡ç†å‘˜
        List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0004);
        if (CollectionUtil.isEmpty(userSelectors)) {
            throw new JeecgBootException("设备未分配给设备管理员,无法进入下级审批!");
        }
        List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
        variables.put("NextAssignee", usernames);
        Result result = flowDefinitionService.startProcessInstanceByKey("equipment_unseal", variables);
        if (result != null) {
            entity.setSealEndTime(new Date());
            entity.setSealStatus(EquipmentSealUpStatusEnum.WAIT_UNSEALING_AUDIT.name());
               //保存工单
            equipmentSealUpMapper.updateById(entity);
            return result.isSuccess();
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean submit(String id) {
        EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(id);
        if (entity == null) {
            throw new JeecgBootException("要提交的数据不存在,请刷新重试!");
        }
        if (!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getSealStatus())) {
        if (!EquipmentSealUpStatusEnum.WAIT_SUBMIT.name().equals(entity.getSealStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
@@ -234,8 +282,129 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public EamEquipmentSealUp approval(EamEquipmentSealUpRequest request) {
        EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(request.getId());
        if (entity == null) {
            throw new JeecgBootException("审批的数据已删除,请刷新重试!");
        }
        // èŽ·å–å½“å‰ç™»å½•ç”¨æˆ·
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (user == null || StrUtil.isBlank(user.getId())) {
            throw new JeecgBootException("未获取到登录用户,请重新登录后再试!");
        }
        request.setApprovalUser(user.getUsername());
        // èŽ·å–æµç¨‹ä¸šåŠ¡è®°å½•
        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
        if (flowMyBusiness == null) {
            throw new JeecgBootException("流程实例不存在,请刷新后重试!");
        }
        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
        if (!userAuthorized) {
            throw new JeecgBootException("用户无权操作此任务,请刷新后重试!");
        }
        // è®¤é¢†ä»»åŠ¡
        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
            throw new JeecgBootException("任务不存在、已完成或已被他人认领!");
        }
        EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在,请检查!");
        }
        EquipmentSealUpStatusEnum status = EquipmentSealUpStatusEnum.getInstance(entity.getSealStatus());
        if (status == null) {
        return null;
    }
        //流程变量
        Map<String, Object> values = new HashMap<>();
        switch (status) {
            // å®¡æ‰¹
            case WAIT_UNSEALING_AUDIT:
                //执行完成
                values.put("dataId", entity.getId());
                values.put("organization", request.getApprovalComment());
                values.put("comment", request.getApprovalComment());
                values.put("approvalDealType", request.getApprovalDealType());
                request.setComment(request.getApprovalComment());
                entity.setApprovalUser(user.getUsername());// å®¡æ ¸äºº
                entity.setApprovalComment(request.getApprovalComment());// å®¡æ ¸æ„è§
                entity.setApprovalTime(new Date());// å®¡æ ¸æ—¶é—´
                entity.setApprovalDealType(request.getApprovalDealType()); // å®¡æ‰¹ç±»åž‹
                // éªŒè¯é€šè¿‡è¿˜æ˜¯é©³å›ž
                if (request.getApprovalDealType().equals("1")) {
                    //设置entity
                    entity.setSealStatus(EquipmentSealUpStatusEnum.SEALED.name());
                    List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getReportUser()));
                    values.put("NextAssignee", userApprovalList);
                } else {
                    //设置entity
                    entity.setSealStatus(EquipmentSealUpStatusEnum.WAIT_SUBMIT.name());
                    // ä¿®æ”¹è®¾å¤‡çŠ¶æ€
                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
                    eamEquipmentService.updateById(equipment);
                }
                break;
            // å·²å°å­˜
            case SEALED:
                values.put("dataId", entity.getId());
                values.put("organization", request.getUnsealApprovalComment());
                values.put("comment", request.getUnsealApprovalComment());
                request.setComment(request.getUnsealApprovalComment());
                // éªŒè¯é€šè¿‡è¿˜æ˜¯é©³å›ž
                if (request.getUnsealApprovalDealType().equals("1")) {
                    //设置entity
                    entity.setSealStatus(EquipmentSealUpStatusEnum.COMPLETE.name());
                    // ä¿®æ”¹è®¾å¤‡çŠ¶æ€
                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
                } else {
                    //设置entity
                    entity.setSealStatus(EquipmentSealUpStatusEnum.SEALED.name());
                }
                entity.setUnsealApprovalUser(user.getUsername());
                entity.setUnsealApprovalComment(request.getUnsealApprovalComment());
                entity.setUnsealApprovalTime(new Date());
                // ä¿®æ”¹è®¾å¤‡çŠ¶æ€
                equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
                eamEquipmentService.updateById(equipment);
                break;
        }
        request.setValues(values);
        // å®Œæˆæµç¨‹ä»»åŠ¡
        Result result = flowTaskService.complete(request);
        if (!result.isSuccess()) {
            throw new JeecgBootException("审批失败,请刷新查看!");
        }
        //保存工单
        equipmentSealUpMapper.updateById(entity);
        return entity;
    }
    /**
     * åˆ¤æ–­ç”¨æˆ·æ˜¯å¦æ‹¥æœ‰æ­¤æƒé™
     *
     * @param flowMyBusiness
     * @param user
     * @return
     */
    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
        return todoUsers != null && todoUsers.contains(user.getUsername());
    }
    private boolean claimTask(String taskId, LoginUser user) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            return false;
        }
        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
            return false;
        }
        taskService.claim(taskId, user.getUsername());
        return true;
    }
    @Override
    public void afterFlowHandle(FlowMyBusiness business) {