From 3de17c8b85f91b55175b631b0b8bdc837b24e993 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 11 十一月 2024 11:34:14 +0800
Subject: [PATCH] 工单处理结果审核接口

---
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java   |   58 +++++++++++++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java          |   47 +++++++++------
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java     |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java |   22 +++++++
 4 files changed, 111 insertions(+), 20 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java
index adef976..fcad735 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java
@@ -6,8 +6,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2024-11-06 11:49
- * @LastEditTime 2024-11-06 11:49
+ * @date 2024-11-11 9:32
+ * @LastEditTime 2024-11-11 9:32
  * @Description
  */
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java
index 22e2ff0..23d5d43 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java
@@ -7,65 +7,76 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
 import lombok.*;
 
 import java.util.Date;
 
 /**
  * @author ZhuBaoMin
- * @date 2024-11-06 11:49
- * @LastEditTime 2024-11-06 11:49
+ * @date 2024-11-11 9:32
+ * @LastEditTime 2024-11-11 9:32
  * @Description 澶勭悊缁撴灉瀹℃牳瀹炰綋绫�
  */
 
-@TableName(value="ope_approve_result", autoResultMap = true)
+@TableName(value = "ope_approve_result", autoResultMap = true)
 @Data
 @Builder
 @ToString
 @NoArgsConstructor
 @AllArgsConstructor
 public class OpeApproveResult implements BaseEntity {
-    public static final long serialVersionUID = 202411061152001L;
+    public static final long serialVersionUID = 202411110935001L;
 
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     private Long id;
 
     /**
-    * 宸ュ崟ID
-    */
+     * 宸ュ崟ID
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "宸ュ崟ID涓嶈兘涓虹┖")
     private Long workOrderId;
 
     /**
-    * 澶勭悊缁撴灉ID
-    */
+     * 澶勭悊缁撴灉ID
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "澶勭悊缁撴灉涓嶈兘涓虹┖")
     private Long processingResultId;
 
     /**
-    * 瀹℃牳浜篒D
-    */
+     * 瀹℃牳浜篒D
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "瀹℃牳浜轰笉鑳戒负绌�")
     private Long approverId;
 
     /**
-    * 瀹℃牳鏃堕棿
-    */
+     * 瀹℃牳鏃堕棿
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date approveTime;
 
     /**
-    * 瀹℃牳缁撴灉;1-閫氳繃锛�2-椹冲洖
-    */
+     * 瀹℃牳缁撴灉;1-閫氳繃锛�2-椹冲洖
+     */
+    @NotNull(message = "瀹℃牳缁撴灉涓嶈兘涓虹┖")
+    @Positive(message = "瀹℃牳缁撴灉鍊煎繀椤讳负姝f暟")
+    @Min(value = 1, message = "瀹℃牳缁撴灉鏈�灏忎负1")
+    @Max(value = 2, message = "瀹℃牳缁撴灉鏈�澶т负2")
     private Byte approveResult;
 
     /**
-    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
-    */
+     * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long deleted;
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
index e365380..08c7db2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
@@ -8,6 +8,7 @@
 import com.dy.pipIrrApp.workOrder.dto.DtoDeleteProResult;
 import com.dy.pipIrrApp.workOrder.dto.DtoDeleteWorkOrder;
 import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder;
+import com.dy.pipIrrGlobal.pojoOp.OpeApproveResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
 import com.dy.pipIrrGlobal.voOp.VoProcessingResult;
@@ -244,4 +245,25 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 瀹℃牳澶勭悊缁撴灉
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "approveProResult")
+    @Transactional(rollbackFor = Exception.class)
+    public BaseResponse<Boolean> approveProResult(@RequestBody @Valid OpeApproveResult po, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        String result = workOrderSv.approveProResult(po);
+        if(!result.equals("success")) {
+            return BaseResponseUtils.buildErrorMsg(result);
+        }
+
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
index 356820b..30d7b7f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
@@ -2,8 +2,10 @@
 
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder;
+import com.dy.pipIrrGlobal.daoOp.OpeApproveResultMapper;
 import com.dy.pipIrrGlobal.daoOp.OpeProcessingResultMapper;
 import com.dy.pipIrrGlobal.daoOp.OpeWorkOrderMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeApproveResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
 import com.dy.pipIrrGlobal.voOp.VoProcessingResult;
@@ -32,6 +34,9 @@
 
     @Autowired
     private OpeProcessingResultMapper opeProcessingResultMapper;
+
+    @Autowired
+    private OpeApproveResultMapper opeApproveResultMapper;
 
     /**
      * 娣诲姞宸ュ崟璁板綍
@@ -169,4 +174,57 @@
     public VoProcessingResult getProResultById(Long proResultId) {
         return opeProcessingResultMapper.getProResultById(proResultId);
     }
+
+    /**
+     * 瀹℃牳宸ュ崟澶勭悊缁撴灉
+     *      1. 鍒ゆ柇鎸囧畾鐨勫伐鍗曞強澶勭悊缁撴灉鏄惁瀛樺湪涓旀湭瀹屾垚
+     *      2. 娣诲姞瀹℃牳璁板綍
+     *      3. 濡傛灉瀹℃牳閫氳繃
+     *          澶勭悊缁撴灉鐘舵�佹敼涓哄凡閫氳繃
+     *          宸ュ崟琛ュ厖浠诲姟瀹屾垚鏃堕棿
+     *          宸ュ崟鐘舵�佹敼涓哄凡瀹屾垚
+     *      4. 濡傛灉椹冲洖
+     *          浠诲姟澶勭悊缁撴灉鏀逛负椹冲洖
+     *          宸ュ崟椹冲洖娆℃暟鍔�1
+     * @param po
+     * @return
+     */
+    public String approveProResult(OpeApproveResult po) {
+
+        OpeProcessingResult processingResult = opeProcessingResultMapper.selectByPrimaryKey(po.getProcessingResultId());
+        if(processingResult == null || processingResult.getDeleted() != 0 || processingResult.getState() != 1) {
+            return "澶勭悊缁撴灉涓嶅瓨鍦ㄦ垨宸插畬鎴愬鏍�";
+        }
+
+        OpeWorkOrder workOrder = opeWorkOrderMapper.selectByPrimaryKey(po.getWorkOrderId());
+        if(workOrder == null || workOrder.getDeleted() != 0 || workOrder.getState() == 2) {
+            return "宸ュ崟涓嶅瓨鍦ㄦ垨宸插畬鎴�";
+        }
+
+        po.setApproveTime(new Date());
+        po.setDeleted(0L);
+        if(opeApproveResultMapper.insert(po) == 0) {
+            return "瀹℃牳璁板綍娣诲姞澶辫触";
+        }
+
+        if(po.getApproveResult() == 1) {
+            // 瀹℃牳閫氳繃
+            processingResult.setState((byte)2);
+            opeProcessingResultMapper.updateByPrimaryKeySelective(processingResult);
+
+            workOrder.setCompleteTime(processingResult.getCompleteTime());
+            workOrder.setState((byte)2);
+            opeWorkOrderMapper.updateByPrimaryKeySelective(workOrder);
+
+        } else {
+            // 椹冲洖
+            processingResult.setState((byte)3);
+            opeProcessingResultMapper.updateByPrimaryKeySelective(processingResult);
+
+            workOrder.setRejectTimes(workOrder.getRejectTimes() + 1);
+            opeWorkOrderMapper.updateByPrimaryKeySelective(workOrder);
+        }
+
+        return "success";
+    }
 }

--
Gitblit v1.8.0