From 5da2a83e7b6df51351702aa68e10790205689117 Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期四, 08 五月 2025 19:44:32 +0800
Subject: [PATCH] 增加批量修改钣金计划时间接口

---
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java |   13 ++
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml                     |   54 ++++++++++++-
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanDate.java                          |   31 +++++++
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java                 |    8 ++
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java      |   28 +++++--
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanRequireDate.java                   |   32 ++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java              |    3 
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java                       |   16 +++
 8 files changed, 167 insertions(+), 18 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java
index ebc712e..f878ca4 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlatOrderPlanManagerController.java
@@ -1,14 +1,14 @@
 package com.aps.core.controller.mainPlan;
 
 import com.aps.common.core.web.controller.BaseController;
+import com.aps.common.core.web.domain.AjaxResult;
 import com.aps.common.core.web.page.TableDataInfo;
+import com.aps.core.domain.ApsPlateOrderPlanDate;
 import com.aps.core.domain.ApsPlateOrderPlanManager;
 import com.aps.core.domain.ApsPlateStandardRequire;
 import com.aps.core.service.IApsPlateOrderPlanManagerService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -48,4 +48,11 @@
         return list;
     }
 
+    @PutMapping("/planDate")
+    public AjaxResult list(@RequestBody ApsPlateOrderPlanDate apsPlateOrderPlanDate)
+    {
+        iapPlateOrderPlanManagerService.updatePlanDate(apsPlateOrderPlanDate);
+        return AjaxResult.success();
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanDate.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanDate.java
new file mode 100644
index 0000000..5908bd2
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanDate.java
@@ -0,0 +1,31 @@
+package com.aps.core.domain;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝鏃ユ湡鎵归噺璁剧疆鍙傛暟
+ *
+ * @author sfd
+ * &#064;date  2025-05-08
+ */
+@Data
+public class ApsPlateOrderPlanDate
+{
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鏄惁鑷畾涔�
+     */
+    private Boolean isCustom;
+
+    /** 宸ュ崟ID鍒楄〃 */
+    private List<Long> planIds;
+
+    /** 鑷畾涔夋棩鏈� */
+    private Timestamp customDate;
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java
index 47d6d07..c19ae34 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanManager.java
@@ -9,10 +9,10 @@
 import java.util.Date;
 
 /**
- * 鏍囧噯宸ヨ壓璺嚎Header瀵硅薄 aps_standard_process_route_header
+ * 閽i噾宸ュ崟璁″垝绠$悊
  * 
- * @author zhl
- * &#064;date  2025-05-06
+ * @author sfd
+ * &#064;date  2025-05-08
  */
 @Data
 public class ApsPlateOrderPlanManager
@@ -90,4 +90,14 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "宸ュ崟鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date orderCreateTime;
+
+    /** 闇�姹傝鍒掑紑宸ユ棩 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "闇�姹傝鍒掑紑宸ユ棩", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date startDay;
+
+    /** 闇�姹傝鍒掑紑瀹屾棩 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "闇�姹傝鍒掑紑瀹屾棩", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date completeDay;
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanRequireDate.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanRequireDate.java
new file mode 100644
index 0000000..29774df
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateOrderPlanRequireDate.java
@@ -0,0 +1,32 @@
+package com.aps.core.domain;
+
+import com.aps.common.core.web.domain.BaseEntity;
+import lombok.Data;
+
+import java.io.Serial;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * 閽i噾宸ュ崟璁″垝闇�姹傛棩鏈�
+ *
+ * @author sfd
+ * &#064;date  2025-05-08
+ */
+@Data
+public class ApsPlateOrderPlanRequireDate extends BaseEntity
+{
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璁″垝ID
+     */
+    private Long id;
+
+    /** 鏈�鏃╁紑宸ユ棩 */
+    private Timestamp start;
+
+    /** 鏈�鏃╁畬宸ユ棩 */
+    private Timestamp end;
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java
index 8a8be60..a37dd91 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateOrderPlanManagerMapper.java
@@ -1,6 +1,8 @@
 package com.aps.core.mapper;
 
+import com.aps.core.domain.ApsPlateOrderPlanDate;
 import com.aps.core.domain.ApsPlateOrderPlanManager;
+import com.aps.core.domain.ApsPlateOrderPlanRequireDate;
 import com.aps.core.domain.ApsPlateStandardRequire;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -31,4 +33,10 @@
      * @return 鏌ヨ閽i噾宸ュ崟闇�姹�
      */
     List<ApsPlateStandardRequire> selectApsPlanStandardRequire(String workOrderNo);
+
+    List<ApsPlateOrderPlanRequireDate> selectPlanRequireIds(List<Long> planIds);
+
+    void updatePlanDateByBatch(ApsPlateOrderPlanRequireDate planRequireDate);
+
+    void updatePlanDateByCustom(ApsPlateOrderPlanDate apsPlateOrderPlanDate);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java
index 32da57d..afb5460 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateOrderPlanManagerService.java
@@ -1,5 +1,6 @@
 package com.aps.core.service;
 
+import com.aps.core.domain.ApsPlateOrderPlanDate;
 import com.aps.core.domain.ApsPlateOrderPlanManager;
 import com.aps.core.domain.ApsPlateStandardRequire;
 
@@ -17,4 +18,6 @@
     List<ApsPlateOrderPlanManager> selectApsPlanOrderManager(ApsPlateOrderPlanManager apsPlateOrderPlanManager);
 
     List<ApsPlateStandardRequire> selectApsPlanStandardRequire(String workOrderNo);
+
+    void updatePlanDate(ApsPlateOrderPlanDate apsPlateOrderPlanDate);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
index ada802f..db7202a 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
@@ -1,29 +1,26 @@
 package com.aps.core.service.impl;
 
-import com.aps.common.core.utils.DateUtils;
-import com.aps.common.core.utils.uuid.IdUtils;
 import com.aps.common.security.utils.SecurityUtils;
-import com.aps.core.domain.ApsPlant;
+import com.aps.core.domain.ApsPlateOrderPlanDate;
 import com.aps.core.domain.ApsPlateOrderPlanManager;
+import com.aps.core.domain.ApsPlateOrderPlanRequireDate;
 import com.aps.core.domain.ApsPlateStandardRequire;
-import com.aps.core.mapper.ApsPlantMapper;
 import com.aps.core.mapper.ApsPlateOrderPlanManagerMapper;
-import com.aps.core.service.IApsPlantService;
 import com.aps.core.service.IApsPlateOrderPlanManagerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
 /**
  * 閽i噾宸ュ崟璁″垝绠$悊鎺ュ彛 Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2025-04-14
  */
 @Service
-public class ApsPlateOrderPlanManagerServiceImpl implements IApsPlateOrderPlanManagerService
-{
+public class ApsPlateOrderPlanManagerServiceImpl implements IApsPlateOrderPlanManagerService {
     @Autowired
     private ApsPlateOrderPlanManagerMapper apsPlateOrderPlanManagerMapper;
 
@@ -42,4 +39,19 @@
     public List<ApsPlateStandardRequire> selectApsPlanStandardRequire(String workOrderNo) {
         return apsPlateOrderPlanManagerMapper.selectApsPlanStandardRequire(workOrderNo);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updatePlanDate(ApsPlateOrderPlanDate apsPlateOrderPlanDate) {
+        if (apsPlateOrderPlanDate.getIsCustom()){
+            apsPlateOrderPlanManagerMapper.updatePlanDateByCustom(apsPlateOrderPlanDate);
+        }else{
+            List<ApsPlateOrderPlanRequireDate> planRequireDates = apsPlateOrderPlanManagerMapper.selectPlanRequireIds(apsPlateOrderPlanDate.getPlanIds());
+            planRequireDates.forEach(planRequireDate -> {
+                planRequireDate.setUpdateBy(SecurityUtils.getUsername());
+                apsPlateOrderPlanManagerMapper.updatePlanDateByBatch(planRequireDate);
+            });
+        }
+
+    }
 }
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml
index ee20061..a19381d 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanOrderManagerMapper.xml
@@ -20,7 +20,9 @@
         <result property="planStartDay"    column="plan_start_day"    />
         <result property="planEndDay"    column="plan_end_day"    />
         <result property="unmatchedQuantity"    column="unmatched_quantity"    />
-        <result property="hasDelayRisk"    column="has_risk"    />
+        <result property="hasDelayRisk"    column="has_delay_risk"    />
+        <result property="startDate"    column="start_date"    />
+        <result property="completeDate"    column="complete_date"    />
     </resultMap>
 
     <select id="selectApsPlanOrderManager" parameterType="ApsPlateOrderPlanManager" resultMap="ApsPlateOrderPlanManagerResult">
@@ -39,15 +41,18 @@
             plan.plan_start_day,
             plan.plan_end_day,
             plan.unmatched_quantity,
-            plan.has_risk,
-            plan.id
+            require.has_delay_risk,
+            plan.id,
+            require.start_date,
+            require.complete_date
         from aps_plate_standard_require_bom_order_detail detail
+            left join aps_plate_standard_require require on on detail.require_id = require.id
             left join aps_plate_plan plan on detail.doc_no = plan.document_number
         <where>  
             <if test="workOrderNo != null  and workOrderNo != ''"> and detail.doc_no = #{workOrderNo}</if>
             <if test="requireId != null  and requireId != ''"> and detail.require_id = #{requireId}</if>
             <if test="mainPartNumber != null  and mainPartNumber != ''"> and plan.main_part_number = #{mainPartNumber}</if>
-            <if test="hasDelayRisk != null  and hasDelayRisk != ''"> and plan.has_risk = #{hasDelayRisk}</if>
+            <if test="hasDelayRisk != null  and hasDelayRisk != ''"> and require.has_delay_risk = #{hasDelayRisk}</if>
         </where>
     </select>
 
@@ -120,4 +125,45 @@
         </where>
     </select>
 
+    <resultMap type="ApsPlateOrderPlanRequireDate" id="selectPlanRequireIdsResult">
+        <result property="id"    column="id"    />
+        <result property="start"    column="start_date"    />
+        <result property="end"    column="end_date"    />
+    </resultMap>
+
+    <select id="selectPlanRequireIds" parameterType="String" resultMap="selectPlanRequireIdsResult">
+        select
+            plan.id,
+            min(require.start_date) as start_date,
+            min(require.complete_date) as end_date
+        from aps_plate_standard_require_bom_order_detail detail
+            left join aps_plate_standard_require require on on detail.require_id = require.id
+            left join aps_plate_plan plan on detail.doc_no = plan.document_number
+        where plan.id in
+        <foreach collection="planIds" item="planId" open="(" separator="," close=")">
+            #{planId}
+        </foreach>
+        group by plan.id
+    </select>
+
+    <update id="updatePlanDateByBatch" parameterType="ApsPlateOrderPlanRequireDate">
+        update aps_plate_plan set
+          plan_start_day = #{planRequireDate.start},
+          plan_end_day = #{planRequireDate.end},
+          update_by = #{planRequireDate.updateBy},
+          update_time = now()
+        where id =  #{planRequireDate.id}
+    </update>
+
+    <update id="updatePlanDateByCustom" parameterType="ApsPlateOrderPlanDate">
+        update aps_plate_plan set
+          plan_end_day = #{planRequireDate.customDate},
+          update_by = #{planRequireDate.updateBy},
+          update_time = now()
+        where id in
+        <foreach collection="planRequireDate.planIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3