From bf30552ba8237818b2d71b8dadfd0f1538457131 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 08 四月 2025 14:54:56 +0800
Subject: [PATCH] 点检工单

---
 lxzn-module-eam/pom.xml                                                                                |    5 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java              |   21 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java             |  126 ++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java |   20 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java                     |   18 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java         |   14 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java    |  344 ++++++++++++++++++++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java            |   52 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java       |   92 ++++++
 9 files changed, 673 insertions(+), 19 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java
index 313c0c8..43926c7 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java
@@ -183,10 +183,16 @@
 		return Result.OK(dispatchFile);
 	}
 
-	 @GetMapping(value = "/selectVoById")
-	 public Result<?> selectVoById(@RequestParam(name="id") String id){
-		 return dispatchFileService.queryDispatchFile(id);
-	 }
+	/**
+	 * 鏌ヨ瀹$鍩烘湰淇℃伅
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value = "鏌ヨ瀹$鍩烘湰淇℃伅", notes = "鏌ヨ瀹$鍩烘湰淇℃伅")
+	@GetMapping(value = "/selectVoById")
+	public Result<?> selectVoById(@RequestParam(name="id") String id){
+		return dispatchFileService.queryDispatchFile(id);
+	}
 
     /**
     * 瀵煎嚭excel
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java
new file mode 100644
index 0000000..b90a87c
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java
@@ -0,0 +1,21 @@
+package org.jeecg.modules.eam.constant;
+
+public enum InspectionStatus {
+    INIT("1", "寰呯偣妫�"),
+    IN_PROGRESS("2", "鐐规涓�"),
+    COMPLETED("3", "鐐规瀹屾垚" ),
+    CONFIRMED("4", "宸茬‘璁�" );
+
+    private final String code;
+    private final String desc;
+
+    InspectionStatus(String code, String desc) {
+
+        this.code = code;
+        this.desc = desc;
+    }
+
+    // Getters
+    public String getCode() { return code; }
+    public String getDesc() { return desc; }
+}
diff --git a/lxzn-module-eam/pom.xml b/lxzn-module-eam/pom.xml
index 53d4c00..4e188e8 100644
--- a/lxzn-module-eam/pom.xml
+++ b/lxzn-module-eam/pom.xml
@@ -30,6 +30,11 @@
             <artifactId>lxzn-module-mdc-common</artifactId>
             <version>3.4.3</version>
         </dependency>
+        <dependency>
+            <groupId>org.jeecgframework.boot</groupId>
+            <artifactId>lxzn-module-flowable</artifactId>
+            <version>${jeecgboot.version}</version>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java
index 8c1431c..428905e 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java
@@ -10,8 +10,13 @@
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.eam.constant.BusinessCodeConst;
+import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
 import org.jeecg.modules.eam.entity.EamInspectionOrder;
+import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
 import org.jeecg.modules.eam.service.IEamInspectionOrderService;
+import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
+import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
@@ -31,9 +36,12 @@
 @RequestMapping("/eam/eamInspectionOrder")
 @Slf4j
 public class EamInspectionOrderController extends JeecgController<EamInspectionOrder, IEamInspectionOrderService> {
-	@Autowired
-	private IEamInspectionOrderService eamInspectionOrderService;
-
+	 @Autowired
+	 private IEamInspectionOrderService eamInspectionOrderService;
+	 @Autowired
+	 private ISysBusinessCodeRuleService businessCodeRuleService;
+	 @Autowired
+	 private IEamMaintenanceStandardService eamMaintenanceStandardService;
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
 	 *
@@ -56,36 +64,102 @@
 		return Result.OK(pageList);
 	}
 
+	 /**
+	  * 鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅
+	  * @param id
+	  * @return
+	  */
+	 @ApiOperation(value = "鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅", notes = "鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅")
+	 @GetMapping(value = "/selectVoById")
+	 public Result<?> selectVoById(@RequestParam(name="id") String id){
+		 return eamInspectionOrderService.selectVoById(id);
+	 }
+
+
 	/**
 	 *   娣诲姞
 	 *
-	 * @param eamInspectionOrder
+	 * @param eamInspectionOrderRequest
 	 * @return
 	 */
 	@AutoLog(value = "鐐规宸ュ崟-娣诲姞")
 	@ApiOperation(value="鐐规宸ュ崟-娣诲姞", notes="鐐规宸ュ崟-娣诲姞")
 	//@RequiresPermissions("org.jeecg.modules:鐐规宸ュ崟:add")
 	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody EamInspectionOrder eamInspectionOrder) {
-		eamInspectionOrderService.save(eamInspectionOrder);
+	public Result<String> add(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
+		String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.INSPECTION_ORDER_CODE_RULE);
+		eamInspectionOrderRequest.setOrderNum(codeSeq);
+		eamInspectionOrderRequest.setCreationMethod(String.valueOf(OrderCreationMethodEnum.AUTO));
+		eamInspectionOrderService.addInspectionOrder(eamInspectionOrderRequest);
 		return Result.OK("娣诲姞鎴愬姛锛�");
 	}
 
 	/**
 	 *  缂栬緫
 	 *
-	 * @param eamInspectionOrder
+	 * @param eamInspectionOrderRequest
 	 * @return
 	 */
 	@AutoLog(value = "鐐规宸ュ崟-缂栬緫")
 	@ApiOperation(value="鐐规宸ュ崟-缂栬緫", notes="鐐规宸ュ崟-缂栬緫")
 	//@RequiresPermissions("org.jeecg.modules:鐐规宸ュ崟:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody EamInspectionOrder eamInspectionOrder) {
-		eamInspectionOrderService.updateById(eamInspectionOrder);
+	public Result<String> edit(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
+		eamInspectionOrderService.editInspectionOrder(eamInspectionOrderRequest);
 		return Result.OK("缂栬緫鎴愬姛!");
 	}
 
+	 /**
+	  * 棰嗗彇鐐规宸ュ崟
+	  * @param id
+	  * @return
+	  */
+	 @AutoLog(value = "鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟")
+	 @ApiOperation(value="鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟", notes="鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟")
+	 @GetMapping(value = "/receiveInspectionOrder")
+	 public Result<String> receiveInspectionOrder(@RequestParam(name="id") String id) {
+		 eamInspectionOrderService.takeInspectionOrder(id);
+		 return Result.OK("棰嗗彇鎴愬姛");
+	 }
+
+	 /**
+	  * 浣滃簾鐐规宸ュ崟
+	  * @param id
+	  * @return
+	  */
+	 @AutoLog(value = "鐐规宸ュ崟-浣滃簾鐐规宸ュ崟")
+	 @ApiOperation(value="鐐规宸ュ崟-浣滃簾鐐规宸ュ崟", notes="鐐规宸ュ崟-浣滃簾鐐规宸ュ崟")
+	 @GetMapping(value = "/cancelInspectionOrder")
+	 public Result<String> cancelInspectionOrder(@RequestParam(name="id") String id) {
+		 eamInspectionOrderService.cancelInspectionOrder(id);
+		 return Result.OK("浣滃簾鎴愬姛");
+	 }
+
+	 /**
+	  * 鎵归噺浣滃簾涓庨鍙�
+	  * @param ids
+	  * @param type
+	  * @return
+	  */
+	 @AutoLog(value = "鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�")
+	 @ApiOperation(value="鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�", notes="鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�")
+	 @GetMapping(value = "/cancelOrReceive")
+	 public Result<?> cancelOrReceive(@RequestParam(name="ids") String ids, @RequestParam(name="type") String type) {
+		 return eamInspectionOrderService.batchCancelOrTakeInspectionOrder(ids, type);
+	 }
+
+	 /**
+	  * 鐐规娴佺▼
+	  * @param eamInspectionOrderRequest
+	  * @return
+	  */
+	 @AutoLog(value = "鐐规娴佺▼")
+	 @ApiOperation(value="鐐规宸ュ崟-鐐规娴佺▼", notes="鐐规宸ュ崟-鐐规娴佺▼")
+	 @PostMapping("/approval")
+	 public Result<?> approval(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
+		 return eamInspectionOrderService.inspectionProcess(eamInspectionOrderRequest);
+	 }
+
 	/**
 	 *   閫氳繃id鍒犻櫎
 	 *
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java
index a5168af..931aa4a 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.eam.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,8 +20,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
+import java.util.List;
 
- /**
+/**
  * @Description: 鐐规宸ュ崟鏄庣粏
  * @Author: jeecg-boot
  * @Date:   2025-04-02
@@ -158,4 +160,20 @@
         return super.importExcel(request, response, EamInspectionOrderDetail.class);
     }
 
+	/**
+	 * 涓�娆″姞杞�
+	 *
+	 * @param orderId
+	 * @return
+	 */
+	@ApiOperation(value = "淇濆吇鏍囧噯鏄庣粏-涓嶅垎椤靛垪琛ㄦ煡璇�", notes = "淇濆吇鏍囧噯鏄庣粏-涓嶅垎椤靛垪琛ㄦ煡璇�")
+	@GetMapping(value = "/queryList")
+	public Result<?> queryList(@RequestParam("orderId") String orderId) {
+		LambdaQueryWrapper<EamInspectionOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(EamInspectionOrderDetail::getOrderId, orderId);
+		queryWrapper.orderByAsc(EamInspectionOrderDetail::getItemCode);
+		List<EamInspectionOrderDetail> list = eamInspectionOrderDetailService.list(queryWrapper);
+		return Result.OK(list);
+	}
+
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java
index fb934c4..563f2f9 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java
@@ -64,12 +64,12 @@
 	/**璁惧ID*/
 	@Excel(name = "璁惧ID", width = 15)
     @ApiModelProperty(value = "璁惧ID")
-    @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id")
+    @Dict(dictTable = "eam_equipment", dicCode = "id", dicText = "equipment_code")
     private String equipmentId;
 	/**鏍囧噯ID*/
 	@Excel(name = "淇濆吇鏍囧噯ID", width = 15)
     @ApiModelProperty(value = "淇濆吇鏍囧噯ID")
-    @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id")
+    @Dict(dictTable = "eam_maintenance_standard", dicCode = "id", dicText = "standard_code")
     private String standardId;
 	/**鐐规鏃ユ湡*/
 	@Excel(name = "鐐规鏃ユ湡锛堣鍒掞級", width = 15, format = "yyyy-MM-dd")
@@ -97,10 +97,12 @@
 	/**鍒涘缓鏂瑰紡*/
 	@Excel(name = "鍒涘缓鏂瑰紡", width = 15)
     @ApiModelProperty(value = "鍒涘缓鏂瑰紡")
+    @Dict(dicCode = "order_creation_method")
     private String creationMethod;
 	/**鐐规鐘舵��*/
 	@Excel(name = "鐐规鐘舵��", width = 15)
-    @ApiModelProperty(value = "鐐规鐘舵��   寰呯偣妫�-寰呯‘璁�-宸插畬鎴�")
+    @ApiModelProperty(value = "鐐规鐘舵��   寰呯偣妫�-鐐规涓�-寰呯‘璁�-宸插畬鎴�-浣滃簾")
+    @Dict(dicCode = "inspection_status")
     private String inspectionStatus;
 	/**鐝粍闀跨‘璁�*/
 	@Excel(name = "鐝粍闀跨‘璁�", width = 15)
@@ -121,4 +123,14 @@
 	@Excel(name = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧-鎵ц鏃�", width = 15)
     @ApiModelProperty(value = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧")
     private String imageFiles;
+
+    /**鏍囧噯鍚嶇О*/
+    @ApiModelProperty(value = "鏍囧噯鍚嶇О")
+    private transient String standardName;
+    /**淇濆吇鍛ㄦ湡;鍗曚綅:澶�*/
+    @ApiModelProperty(value = "淇濆吇鍛ㄦ湡;鍗曚綅:澶�")
+    private transient Integer maintenancePeriod;
+    /**璁惧缂栧彿*/
+    @ApiModelProperty(value = "璁惧缂栧彿")
+    private transient String equipmentCode;
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java
new file mode 100644
index 0000000..3eb586f
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java
@@ -0,0 +1,126 @@
+package org.jeecg.modules.eam.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.api.vo.FileUploadResult;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.modules.eam.entity.EamInspectionOrderDetail;
+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;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class EamInspectionOrderRequest extends FlowTaskVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**涓婚敭*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+    /**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String createBy;
+    /**鍒涘缓鏃堕棿*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+    /**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+    /**鏇存柊鏃堕棿*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+    /**鍒犻櫎鏍囪*/
+    @Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+    /**宸ュ崟鍙�*/
+    @Excel(name = "宸ュ崟鍙�", width = 15)
+    @ApiModelProperty(value = "宸ュ崟鍙�")
+    private String orderNum;
+    /**璁惧ID*/
+    @Excel(name = "璁惧ID", width = 15)
+    @ApiModelProperty(value = "璁惧ID")
+    @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id")
+    private String equipmentId;
+    /**鏍囧噯ID*/
+    @Excel(name = "淇濆吇鏍囧噯ID", width = 15)
+    @ApiModelProperty(value = "淇濆吇鏍囧噯ID")
+    @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id")
+    private String standardId;
+    /**鐐规鏃ユ湡*/
+    @Excel(name = "鐐规鏃ユ湡锛堣鍒掞級", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鐐规鏃ユ湡")
+    private Date inspectionDate;
+    /**鐐规杩囨湡鏃堕棿*/
+    @Excel(name = "鐐规杩囨湡鏃堕棿", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鐐规杩囨湡鏃堕棿")
+    private Date expirationTime;
+    /**鐐规鏃堕棿*/
+    @Excel(name = "鐐规鏃堕棿锛堝疄闄咃級", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鐐规鏃堕棿")
+    private Date operateTime;
+    /**鐐规浜�*/
+    @Excel(name = "鐐规浜�", width = 15)
+    @ApiModelProperty(value = "鐐规浜�-鏄鍙栦汉")
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String operator;
+    /**鍒涘缓鏂瑰紡*/
+    @Excel(name = "鍒涘缓鏂瑰紡", width = 15)
+    @ApiModelProperty(value = "鍒涘缓鏂瑰紡")
+    private String creationMethod;
+    /**鐐规鐘舵��*/
+    @Excel(name = "鐐规鐘舵��", width = 15)
+    @ApiModelProperty(value = "鐐规鐘舵��   寰呯偣妫�-寰呯‘璁�-宸插畬鎴�")
+    private String inspectionStatus;
+    /**鐝粍闀跨‘璁�*/
+    @Excel(name = "鐝粍闀跨‘璁�", width = 15)
+    @ApiModelProperty(value = "鐝粍闀跨‘璁�--棰嗗彇鍚庝骇鐢�")
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String confirmUser;
+    /**纭鏃堕棿*/
+    @Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "纭鏃堕棿")
+    private Date confirmTime;
+    /**澶囨敞*/
+    @Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞-鐐规宸ュ崟鍒涘缓澶囨敞")
+    private String remark;
+    /**鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧*/
+    @Excel(name = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧-鎵ц鏃�", width = 15)
+    @ApiModelProperty(value = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧")
+    private String imageFiles;
+
+    /**涓婁紶鏂囦欢瀵圭郴*/
+    @ApiModelProperty(value = "涓婁紶鏂囦欢瀵硅薄")
+    private List<FileUploadResult> fileList;
+
+    /**鍒楄〃 淇濆吇椤规槑缁�*/
+    @ApiModelProperty(value = "鍒楄〃 淇濆吇椤规槑缁�")
+    private List<EamInspectionOrderDetail> tableDetailList;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java
index 11f3831..fdeee05 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java
@@ -1,7 +1,9 @@
 package org.jeecg.modules.eam.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.eam.entity.EamInspectionOrder;
+import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
 
 /**
  * @Description: 鐐规宸ュ崟
@@ -11,4 +13,54 @@
  */
 public interface IEamInspectionOrderService extends IService<EamInspectionOrder> {
 
+    /**
+     * 鏂板鐐规宸ュ崟
+     * @param eamInspectionOrderRequest
+     * @return
+     */
+    boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest);
+
+    /**
+     * 缂栬緫鐐规宸ュ崟
+     * @param eamInspectionOrderRequest
+     * @return
+     */
+    boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest);
+
+    /**
+     * 棰嗗彇鐐规宸ュ崟
+     * @param id
+     * @return
+     */
+    boolean takeInspectionOrder(String id);
+
+    /**
+     * 浣滃簾鐐规宸ュ崟
+     * @param id
+     * @return
+     */
+    boolean cancelInspectionOrder(String id);
+
+    /**
+     * 鎵归噺浣滃簾涓庨鍙�
+     * @param ids
+     * @param type
+     * @return
+     */
+    Result<?> batchCancelOrTakeInspectionOrder(String ids, String type);
+
+    /**
+     * 鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅
+     * @param id
+     * @return
+     */
+    Result<?> selectVoById(String id);
+
+    /**
+     * 鐐规娴佺▼
+     * @param eamInspectionOrderRequest
+     * @return
+     */
+    Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest);
+
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
index 925a9f5..b26567c 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
@@ -1,10 +1,40 @@
 package org.jeecg.modules.eam.service.impl;
 
+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.extension.service.impl.ServiceImpl;
+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.system.vo.LoginUser;
+import org.jeecg.modules.eam.constant.InspectionStatus;
+import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamInspectionOrder;
+import org.jeecg.modules.eam.entity.EamInspectionOrderDetail;
 import org.jeecg.modules.eam.mapper.EamInspectionOrderMapper;
+import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
+import org.jeecg.modules.eam.service.IEamInspectionOrderDetailService;
 import org.jeecg.modules.eam.service.IEamInspectionOrderService;
+import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl;
+import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
+import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
+import org.jeecg.modules.flowable.service.IFlowDefinitionService;
+import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.IMdcUserProductionService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 鐐规宸ュ崟
@@ -12,7 +42,317 @@
  * @Date:   2025-04-02
  * @Version: V1.0
  */
-@Service
-public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService {
+@Service("IEamInspectionOrderService")
+public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService, FlowCallBackServiceI {
+    @Autowired
+    private IEamInspectionOrderDetailService eamInspectionOrderDetailService;
+    @Resource
+    private FlowCommonService flowCommonService;
+    @Resource
+    private IFlowDefinitionService flowDefinitionService;
+    @Autowired
+    private IFlowTaskService flowTaskService;
+    @Autowired
+    private IEamEquipmentService eamEquipmentService;
+    @Autowired
+    private FlowMyBusinessServiceImpl flowMyBusinessService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private IEamEquipmentService iEamEquipmentService;
+    @Autowired
+    private IMdcUserProductionService mdcUserProductionService;
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) {
+        EamInspectionOrder eamInspectionOrder = new EamInspectionOrder();
+        BeanUtils.copyProperties(eamInspectionOrderRequest,eamInspectionOrder);
+        //淇敼鐘舵��
+        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
+            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
+        }else {
+            eamInspectionOrder.setInspectionStatus(InspectionStatus.INIT.getCode());
+        }
+        save(eamInspectionOrder);
+        //澶勭悊鏄庣粏鏁版嵁
+        if(CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
+            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
+                tableDetail.setOrderId(eamInspectionOrder.getId());
+                tableDetail.setId(null);
+            });
+            eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
+        }
+        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
+            triggerProcess(eamInspectionOrder);
+        }
+        return true;
+    }
 
+    /**
+     * 瑙﹀彂娴佺▼
+     * @param eamInspectionOrder
+     * @return
+     */
+    public boolean triggerProcess(EamInspectionOrder eamInspectionOrder) {
+        EamEquipment equipment = eamEquipmentService.getById(eamInspectionOrder.getEquipmentId());
+        if (equipment == null) {
+            return false;
+        }else {
+            eamInspectionOrder.setEquipmentCode(equipment.getEquipmentCode());
+        }
+        System.out.println("璁惧鐐规锛�" + eamInspectionOrder.getId());
+        flowCommonService.initActBusiness("宸ュ崟鍙凤細"+eamInspectionOrder.getOrderNum()+"璁惧缂栧彿"+eamInspectionOrder.getEquipmentCode()+"杩涜璁惧鐐规",
+                eamInspectionOrder.getId(), "IEamInspectionOrderService", "eam_inspection", null);
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("dataId", eamInspectionOrder.getId());
+        if (StrUtil.isEmpty(eamInspectionOrder.getRemark())){
+            variables.put("organization", "鏂板鐐规宸ュ崟榛樿鍚姩娴佺▼");
+            variables.put("comment", "鏂板鐐规宸ュ崟榛樿鍚姩娴佺▼");
+        }else {
+            variables.put("organization", eamInspectionOrder.getRemark());
+            variables.put("comment", eamInspectionOrder.getRemark());
+        }
+        variables.put("proofreading",true);
+        List<String> usernames=new ArrayList<>();
+        usernames.add(eamInspectionOrder.getOperator());
+        variables.put("NextAssignee", usernames);
+        Result result= flowDefinitionService.startProcessInstanceByKey("eam_inspection", variables);
+        return result.isSuccess();
+    }
+
+
+    @Override
+    public boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) {
+        EamInspectionOrder eamInspectionOrder = new EamInspectionOrder();
+        BeanUtils.copyProperties(eamInspectionOrderRequest, eamInspectionOrder);
+        updateById(eamInspectionOrder);
+        //澶勭悊鏄庣粏鏁版嵁
+        if (CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
+            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
+                tableDetail.setOrderId(eamInspectionOrder.getId());
+            });
+            //鍒犻櫎鏄庣粏
+            eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
+            eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
+        }
+        return true;
+    }
+
+    /**
+     * 棰嗗彇鐐规宸ュ崟
+     * @param id
+     * @return
+     */
+    @Override
+    public boolean takeInspectionOrder(String id){
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        EamInspectionOrder eamInspectionOrder=this.getById(id);
+        if (eamInspectionOrder==null) {
+            return false;
+        }else {
+            eamInspectionOrder.setOperator(user.getUsername());
+            //淇敼鐘舵��
+            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
+            this.triggerProcess(eamInspectionOrder);
+            this.updateById(eamInspectionOrder);
+            return true;
+        }
+    }
+
+    /**
+     * 浣滃簾鐐规宸ュ崟
+     * @param id
+     * @return
+     */
+    @Override
+    public boolean cancelInspectionOrder(String id){
+        EamInspectionOrder eamInspectionOrder = this.getById(id);
+        if (eamInspectionOrder == null) {
+            return false;
+        }else {
+            eamInspectionOrder.setInspectionStatus("5");
+            return updateById(eamInspectionOrder);
+        }
+    }
+
+    /**
+     * 鐐规娴佺▼
+     * @param eamInspectionOrderRequest
+     * @return
+     */
+    @Override
+    @Transactional
+    public Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest){
+        try {
+            // 鍙傛暟鏍¢獙
+            if (!StrUtil.isNotBlank(eamInspectionOrderRequest.getTaskId()) || !StrUtil.isNotBlank(eamInspectionOrderRequest.getDataId())) {
+                return Result.error("闈炴硶鍙傛暟");
+            }
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String userId = user.getId();
+            eamInspectionOrderRequest.setAssignee(user.getUsername());
+            if (!StrUtil.isNotBlank(userId)) {
+                return Result.error("璐﹀彿涓嶅瓨鍦�");
+            }
+
+            // 鏁版嵁鏌ヨ
+            EamInspectionOrder eamInspectionOrder = this.getById(eamInspectionOrderRequest.getDataId());
+            if (eamInspectionOrder == null) {
+                return Result.error("鏈壘鍒板搴旀暟鎹�");
+            }
+
+            // 2. 鏌ヨ娴佺▼涓氬姟璁板綍锛堝鐞嗙┖缁撴灉锛�
+            List<FlowMyBusiness> businessList = flowMyBusinessService.list(
+                    new QueryWrapper<FlowMyBusiness>()
+                            .eq("process_instance_id", eamInspectionOrderRequest.getInstanceId())
+            );
+            if (businessList.isEmpty()) {
+                return Result.error("娴佺▼璁板綍涓嶅瓨鍦�");
+            }
+            FlowMyBusiness flowMyBusiness = businessList.get(0);
+
+            // 3. 鏍¢獙鐢ㄦ埛鏄惁涓哄�欓�夊鐞嗕汉
+            List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
+            if (todoUsers == null || !todoUsers.contains(user.getUsername())) {
+                return Result.error("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�");
+            }
+
+            // 4. 璁ら浠诲姟锛堝鐞嗗凡琚棰嗙殑鎯呭喌锛�
+            String taskId = flowMyBusiness.getTaskId();
+            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+            if (task == null) {
+                return Result.error("浠诲姟涓嶅瓨鍦ㄦ垨宸插畬鎴�");
+            }
+            if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
+                return Result.error("浠诲姟宸茶浠栦汉璁ら");
+            }
+            taskService.claim(taskId, user.getUsername());
+            Map<String, Object> values = new HashMap<>();
+            if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) {
+                //鐐规浜虹偣妫�缁撴潫
+                //鏌ヨ瀵瑰簲鐝粍闀�,浣滀负涓嬩竴鑺傜偣澶勭悊浜�,瀛樺湪澶氫釜澶勭悊浜�
+                String orgId=iEamEquipmentService.getById(eamInspectionOrder.getEquipmentId()).getOrgId();
+                //绛涢�夊嚭鐝粍闀垮矖浣�,post涓篜CR0003
+                List<SysUser> sysUserList= mdcUserProductionService.queryByPostAndProId("PCR0003",orgId);
+                List<String> usernameList;
+                if (sysUserList.isEmpty()){
+                    return Result.error("鏈壘鍒拌璁惧瀵瑰簲杞﹂棿鐨勭彮缁勯暱锛岃鑱旂郴绠$悊鍛樺鐞�");
+                }else {
+                    usernameList = sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList());
+                }
+                // 璁剧疆娴佺▼鍙橀噺
+
+                values.put("dataId", eamInspectionOrder.getId());
+                values.put("organization", "鐐规浜虹偣妫�缁撴潫");
+                values.put("comment","鐐规浜虹偣妫�缁撴潫" );
+                values.put("NextAssignee", usernameList);
+                eamInspectionOrderRequest.setComment("鐐规浜虹偣妫�缁撴潫");
+            }else {
+                //鐝粍闀跨‘璁�
+                values.put("dataId", eamInspectionOrder.getId());
+                values.put("organization", "鐝粍闀跨‘璁�");
+                values.put("comment","鐝粍闀跨‘璁�" );
+                eamInspectionOrderRequest.setComment("鐝粍闀跨‘璁�");
+            }
+            eamInspectionOrderRequest.setValues(values);
+            // 瀹屾垚娴佺▼浠诲姟
+            Result result = flowTaskService.complete(eamInspectionOrderRequest);
+            if (result.isSuccess()) {
+                // 鏇存柊鐘舵��
+                if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) {
+                    //鐐规瀹屾垚
+                    eamInspectionOrder.setInspectionStatus("3");
+                    eamInspectionOrder.setInspectionDate(new Date());
+                    eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
+                    eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
+                    this.updateById(eamInspectionOrder);
+                }
+            } else if ((InspectionStatus.COMPLETED.getCode()).equals(eamInspectionOrder.getInspectionStatus())){
+                // 鐝粍闀跨‘璁や换鍔�
+                eamInspectionOrder.setInspectionStatus("4");
+                eamInspectionOrder.setConfirmUser(user.getUsername());
+                eamInspectionOrder.setConfirmTime(new Date());
+                this.updateById(eamInspectionOrder);
+                //澶勭悊寮傚父鏁版嵁杩涘叆缁翠慨鍗�
+                return result;
+            }
+
+            return Result.OK("鎿嶄綔鎴愬姛");
+        } catch (Exception e) {
+            return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    /**
+     * 鎵归噺浣滃簾涓庨鍙�
+     * @param ids
+     * @param type
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result<?> batchCancelOrTakeInspectionOrder(String ids, String type){
+        if (type == null) {
+            return Result.error("璇烽�夋嫨鎿嶄綔绫诲瀷");
+        }
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<String> list = Arrays.asList(ids.split(","));
+        QueryWrapper<EamInspectionOrder> queryWrapper =new QueryWrapper<>();
+        queryWrapper.in("id", list);
+        queryWrapper.eq("inspection_status", "1");
+        List<EamInspectionOrder> eamInspectionOrderList =this.list(queryWrapper);
+        if (!eamInspectionOrderList.isEmpty()){
+            eamInspectionOrderList.forEach(eamInspectionOrder -> {
+                eamInspectionOrder.setInspectionStatus(type);
+                if (type.equals("2")){
+                    eamInspectionOrder.setOperator(loginUser.getUsername());
+                }else {
+                    eamInspectionOrder.setOperator(null);
+                }
+            });
+            this.updateBatchById(eamInspectionOrderList);
+        }
+        return Result.OK("鎿嶄綔鎴愬姛");
+    }
+
+
+    @Override
+    public Result<?> selectVoById(String id){
+        List<EamInspectionOrder> eamInspectionOrders=this.list(new QueryWrapper<EamInspectionOrder>().eq("id", id));
+        List<EamInspectionOrderRequest> eamInspectionOrderRequestList=new ArrayList<>();
+        eamInspectionOrders.forEach(eamInspectionOrder -> {
+            EamInspectionOrderRequest eamInspectionOrderRequest=new EamInspectionOrderRequest();
+            BeanUtils.copyProperties(eamInspectionOrder,eamInspectionOrderRequest);
+            List<EamInspectionOrderDetail> eamInspectionOrderDetails=eamInspectionOrderDetailService
+                    .list(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
+            eamInspectionOrderRequest.setTableDetailList(eamInspectionOrderDetails);
+            eamInspectionOrderRequestList.add(eamInspectionOrderRequest);
+        });
+        return Result.ok(eamInspectionOrderRequestList);
+    }
+
+    @Override
+    public void afterFlowHandle(FlowMyBusiness business) {
+        business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣
+        business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟
+        business.getActStatus();
+    }
+
+    @Override
+    public Object getBusinessDataById(String dataId) {
+        return this.getById(dataId);
+    }
+
+    @Override
+    public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) {
+        return null;
+    }
+
+    @Override
+    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
+        //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞�
+        //鑾峰彇涓嬩竴姝ュ鐞嗕汉
+        Object object=values.get("NextAssignee");
+        return (List<String>) object;
+    }
 }

--
Gitblit v1.9.3