From 23a41447d547a32ec67925b970162e91730e2561 Mon Sep 17 00:00:00 2001 From: cuikaidong <ckd2942379034@163.com> Date: 星期五, 23 五月 2025 17:14:22 +0800 Subject: [PATCH] 封存启封功能完善,启封,编辑功能 --- db/数据库产品化设计.pdma.json | 146 +++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java | 2 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java | 42 +++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java | 8 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java | 1 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java | 232 ++++++++++++----- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java | 173 +++++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java | 166 +++++++++--- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java | 3 9 files changed, 646 insertions(+), 127 deletions(-) diff --git "a/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" "b/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" index 33ebfa6..2d5287d 100644 --- "a/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" +++ "b/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.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": [], diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java index 7685601..e86451c 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java +++ b/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, //宸插畬鎴� ; diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java index 06784e5..d9a1ad8 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java @@ -194,7 +194,7 @@ } /** - * 缂栬緫 + * 瀹℃壒 * * @param request * @return diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java index f4ecc06..30b2954 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java +++ b/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("鎿嶄綔鎴愬姛!"); + } } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java index 5c78c33..9f91cce 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java @@ -16,91 +16,173 @@ import java.io.Serializable; import java.util.Date; + /** * @Description: 璁惧灏佸瓨鍚皝 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Data @TableName("eam_equipment_seal_up") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="eam_equipment_seal_up瀵硅薄", description="璁惧灏佸瓨鍚皝") +@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*/ - @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; - //鍒楄〃灞曠ず - @TableField(exist = false) - private String equipmentCode; - @TableField(exist = false) - private String equipmentName; + /** + * 涓婚敭 + */ + @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 + */ + @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) + private String equipmentCode; + @TableField(exist = false) + private String equipmentName; } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java index 33700de..f24336a 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java +++ b/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; @@ -20,67 +15,146 @@ /** * @Description: 璁惧灏佸瓨鍚皝 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class EamEquipmentSealUpRequest extends FlowTaskVo implements Serializable { - - /**涓婚敭*/ + + /** + * 涓婚敭 + */ @ApiModelProperty(value = "涓婚敭") - private String id; - /**鍒涘缓浜�*/ + private String id; + /** + * 鍒涘缓浜� + */ @ApiModelProperty(value = "鍒涘缓浜�") - private String createBy; - /**鍒涘缓鏃堕棿*/ + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ @ApiModelProperty(value = "鍒涘缓鏃堕棿") - private Date createTime; - /**鏇存柊浜�*/ + private Date createTime; + /** + * 鏇存柊浜� + */ @ApiModelProperty(value = "鏇存柊浜�") - private String updateBy; - /**鏇存柊鏃堕棿*/ + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ @ApiModelProperty(value = "鏇存柊鏃堕棿") - private Date updateTime; - /**鍒犻櫎鏍囪*/ + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ @ApiModelProperty(value = "鍒犻櫎鏍囪") - private Integer delFlag; - /**璁惧ID*/ + private Integer delFlag; + /** + * 璁惧ID + */ @ApiModelProperty(value = "璁惧ID") - private String equipmentId; - /**鍗曟嵁鍙�*/ + private String equipmentId; + /** + * 鍗曟嵁鍙� + */ @ApiModelProperty(value = "鍗曟嵁鍙�") - private String code; - /**鐢宠浜�*/ + private String code; + /** + * 鐢宠浜� + */ @ApiModelProperty(value = "鐢宠浜�") - private String reportUser; - /**灏佸瓨寮�濮嬫椂闂�*/ + 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; - /**灏佸瓨缁撴潫鏃堕棿*/ + @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; - /**灏佸瓨鍘熷洜*/ + @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; - /**灏佸瓨鐘舵��*/ + private String sealUpReason; + /** + * 灏佸瓨鐘舵�� + */ @ApiModelProperty(value = "灏佸瓨鐘舵��") - @Dict(dicCode = "equipment_seal_up_status") - private String sealStatus; - /**瀹℃牳浜�*/ + @Dict(dicCode = "equipment_seal_up_status") + private String sealStatus; + /** + * 瀹℃牳浜� + */ @ApiModelProperty(value = "瀹℃牳浜�") - private String approvalUser; - /**瀹℃牳鏃堕棿*/ + 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; - /**澶囨敞*/ + @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; + 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; } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java index fcf8915..dc0edca 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java +++ b/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 diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java index 494fba5..c36f796 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java +++ b/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; // 褰掕繕 diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java index 90afff0..a0fbad9 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java +++ b/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,7 +282,128 @@ @Override @Transactional(rollbackFor = Exception.class) public EamEquipmentSealUp approval(EamEquipmentSealUpRequest request) { - return null; + 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 -- Gitblit v1.9.3