From e4efff6637f4d598a7efdfca8b62fbb4c3286b02 Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期四, 22 五月 2025 15:39:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 aps-modules/aps-job/src/main/java/com/aps/job/util/AbstractQuartzJob.java                                          |    6 
 aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsGasPipelineCapacityPlanController.java     |   68 +++++---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java          |   19 ++
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java                |    7 
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java        |    7 
 aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java                                        |    4 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml                                         |   11 
 aps-modules/aps-core/src/main/resources/templates/气体工单数据模板v1.0.xlsx                                                |    0 
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java                                  |    2 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java                          |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java                           |   39 ++--
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineCapacityPlanMapper.xml                           |   15 +
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java           |   22 --
 aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java                         |    3 
 aps-modules/aps-core/src/main/resources/templates/气体预测数据模板v1.0.xlsx                                                |    0 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelineCapacityPlanServiceImpl.java            |   92 ++++++++--
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireBatchServiceImpl.java |   18 -
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireErrorServiceImpl.java |   21 ++
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java                    |    9 +
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelineCapacityPlan.java                             |   16 ++
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml                |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java      |    5 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomStockDetailMapper.xml       |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelineCapacityPlanMapper.java                       |    5 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireMapper.xml                     |    2 
 aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireBatchService.java         |    2 
 /dev/null                                                                                                          |    0 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java      |   46 ++---
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomOrderDetailMapper.xml       |    2 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java                                |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipelineCapacityPlanService.java                    |    2 
 aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java                  |   14 +
 aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireErrorService.java         |    4 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml                         |   10 +
 34 files changed, 305 insertions(+), 162 deletions(-)

diff --git a/aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java b/aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java
index 4460773..1dafb95 100644
--- a/aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java
+++ b/aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java
@@ -29,6 +29,9 @@
      * 鍒ゆ柇鏄惁瀛樺湪閿�
      * */
     public boolean existLock(String key,String value){
+        if(null==this.redisTemplate.opsForValue().get(key)){
+            return false;
+        }
         return this.redisTemplate.opsForValue().get(key).equals(value);
     }
 
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsGasPipelineCapacityPlanController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsGasPipelineCapacityPlanController.java
index e2b1ddd..744750a 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsGasPipelineCapacityPlanController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsGasPipelineCapacityPlanController.java
@@ -24,7 +24,7 @@
 
 /**
  * 姘斾綋绠¤矾浜ц兘瑙勫垝Controller
- * 
+ *
  * @author hjy
  * @date 2025-04-24
  */
@@ -32,8 +32,7 @@
 @Tag(name = "姘斾綋绠¤矾浜ц兘瑙勫垝", description = "姘斾綋绠¤矾浜ц兘瑙勫垝鎺ュ彛")
 @RestController
 @RequestMapping("/gasPipelineCapacityPlan")
-public class ApsGasPipelineCapacityPlanController extends BaseController
-{
+public class ApsGasPipelineCapacityPlanController extends BaseController {
     @Autowired
     private IApsGasPipelineCapacityPlanService apsGasPipelineCapacityPlanService;
 
@@ -46,43 +45,42 @@
     @Operation(summary = "鏌ヨ姘斾綋绠¤矾浜ц兘瑙勫垝鍒楄〃", description = "鍒嗛〉鏌ヨ")
     @RequiresPermissions("aps:gasPipelineCapacityPlan:list")
     @GetMapping("/list")
-    public TableDataInfo list(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public TableDataInfo list(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
 //        startPage();
         List<ApsGasPipelineCapacityPlan> list = apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan);
         ApsStandardProcess apsStandardProcess = new ApsStandardProcess();
         apsStandardProcess.setMajor(apsGasPipelineCapacityPlan.getMajor());
         apsStandardProcess.setPlant(apsGasPipelineCapacityPlan.getOrgCode());
         List<ApsStandardProcess> processList = apsStandardProcessService.selectApsStandardProcessListAll(apsStandardProcess);
-        if(list.isEmpty()){
-            for(ApsStandardProcess apsStandardProcessTemp : processList){
+        if (list.isEmpty()) {
+            for (ApsStandardProcess apsStandardProcessTemp : processList) {
                 ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlanTemp = new ApsGasPipelineCapacityPlan();
                 apsGasPipelineCapacityPlanTemp.setProcessName(apsStandardProcessTemp.getProcessName());
                 apsGasPipelineCapacityPlanTemp.setOrgCode(apsStandardProcessTemp.getPlant());
                 list.add(apsGasPipelineCapacityPlanTemp);
             }
         }
-        if(processList.size()>list.size()){
+        if (processList.size() > list.size()) {
             List<String> newProcess = new ArrayList<>();
-            for(ApsStandardProcess apsStandardProcessTemp : processList){
+            for (ApsStandardProcess apsStandardProcessTemp : processList) {
                 boolean flag = true;
-                for(ApsGasPipelineCapacityPlan temp : list){
-                    if(apsStandardProcessTemp.getProcessName().equals(temp.getProcessName())){
+                for (ApsGasPipelineCapacityPlan temp : list) {
+                    if (apsStandardProcessTemp.getProcessName().equals(temp.getProcessName())) {
                         flag = false;
                         break;
                     }
                 }
-                if(flag){
+                if (flag) {
                     newProcess.add(apsStandardProcessTemp.getProcessName());
                 }
             }
-            for(String processName : newProcess){
+            for (String processName : newProcess) {
                 ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlanTemp = new ApsGasPipelineCapacityPlan();
                 apsGasPipelineCapacityPlanTemp.setProcessName(processName);
                 list.add(apsGasPipelineCapacityPlanTemp);
             }
         }
-        list.sort((a, b)->a.getProcessName().compareTo(b.getProcessName()));
+        list.sort((a, b) -> a.getProcessName().compareTo(b.getProcessName()));
         return getDataTable(list);
     }
 
@@ -93,11 +91,31 @@
     @RequiresPermissions("aps:gasPipelineCapacityPlan:export")
     @Log(title = "姘斾綋绠¤矾浜ц兘瑙勫垝", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public void export(HttpServletResponse response, ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
         List<ApsGasPipelineCapacityPlan> list = apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan);
         ExcelUtil<ApsGasPipelineCapacityPlan> util = new ExcelUtil<ApsGasPipelineCapacityPlan>(ApsGasPipelineCapacityPlan.class);
         util.exportExcel(response, list, "姘斾綋绠¤矾浜ц兘瑙勫垝鏁版嵁");
+    }
+
+
+    /**
+     * 澶嶅埗姘斾綋绠¤矾浜ц兘瑙勫垝
+     */
+    @Operation(summary = "澶嶅埗姘斾綋绠¤矾浜ц兘瑙勫垝", description = "澶嶅埗")
+//    @RequiresPermissions("aps:gasPipelineCapacityPlan:copy")
+    @Log(title = "澶嶅埗姘斾綋绠¤矾浜ц兘瑙勫垝", businessType = BusinessType.INSERT)
+    @PutMapping("/copy")
+    public AjaxResult copy(
+            // 鏍煎紡锛歽yyy-MM
+            @RequestParam String date,
+            @RequestParam String factory,
+            @RequestParam String major,
+            // 鏍煎紡锛歽yyy-MM
+            @RequestParam String toStart,
+            // 鏍煎紡锛歽yyy-MM
+            @RequestParam String toEnd) {
+        apsGasPipelineCapacityPlanService.copyPlan(date, factory, major, toStart, toEnd);
+        return success();
     }
 
     /**
@@ -106,8 +124,7 @@
     @Operation(summary = "鑾峰彇姘斾綋绠¤矾浜ц兘瑙勫垝璇︾粏淇℃伅", description = "鏍规嵁id鑾峰彇")
     @RequiresPermissions("aps:gasPipelineCapacityPlan:query")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanById(id));
     }
 
@@ -118,14 +135,13 @@
     @RequiresPermissions("aps:gasPipelineCapacityPlan:add")
     @Log(title = "姘斾綋绠¤矾浜ц兘瑙勫垝", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody List<ApsGasPipelineCapacityPlan> apsGasPipelineCapacityPlan)
-    {
+    public AjaxResult add(@RequestBody List<ApsGasPipelineCapacityPlan> apsGasPipelineCapacityPlan) {
         apsGasPipelineCapacityPlan.forEach(apsGasPipelineCapacityPlanTemp -> {
-            if(apsGasPipelineCapacityPlanTemp.getId()==null){
+            if (apsGasPipelineCapacityPlanTemp.getId() == null) {
                 apsGasPipelineCapacityPlanTemp.setCreateBy(SecurityUtils.getUsername());
                 apsGasPipelineCapacityPlanTemp.setCreateTime(DateUtils.getNowDate());
                 apsGasPipelineCapacityPlanService.insertApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlanTemp);
-            }else{
+            } else {
                 apsGasPipelineCapacityPlanTemp.setUpdateBy(SecurityUtils.getUsername());
                 apsGasPipelineCapacityPlanTemp.setUpdateTime(DateUtils.getNowDate());
                 apsGasPipelineCapacityPlanService.updateApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlanTemp);
@@ -141,8 +157,7 @@
     @RequiresPermissions("aps:gasPipelineCapacityPlan:edit")
     @Log(title = "姘斾綋绠¤矾浜ц兘瑙勫垝", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public AjaxResult edit(@RequestBody ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
         return toAjax(apsGasPipelineCapacityPlanService.updateApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan));
     }
 
@@ -152,9 +167,8 @@
     @Operation(summary = "鍒犻櫎姘斾綋绠¤矾浜ц兘瑙勫垝", description = "鎵归噺鍒犻櫎")
     @RequiresPermissions("aps:gasPipelineCapacityPlan:remove")
     @Log(title = "姘斾綋绠¤矾浜ц兘瑙勫垝", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(apsGasPipelineCapacityPlanService.deleteApsGasPipelineCapacityPlanByIds(ids));
     }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
index 433c072..d1342ca 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java
@@ -129,7 +129,8 @@
     @PostMapping("/setBomDataToRedis")
     public void setBomDataToRedis()
     {
-        apsBomHeaderService.setBomDataToRedis("");
+        apsBomHeaderService.setBomDataToRedis("FORTUNA");
+        //apsBomHeaderService.setBomDataToRedis("FORTUNE");
     }
 
     @PostMapping("/test")
@@ -137,4 +138,10 @@
     {
         apsBomHeaderService.setBomDataToRedis("FORTUNA");
     }
+
+    @GetMapping("/getBomRdsCount/{orgCode}")
+    public Integer getBomRdsCount(String orgCode)
+    {
+        return apsBomHeaderService.getBomKeys(orgCode);
+    }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
index 28bdaa0..f99787f 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
@@ -130,13 +130,14 @@
      */
     @SneakyThrows
     @Operation(summary = "涓嬭浇姘斾綋宸ュ崟鏁版嵁瀵煎叆妯℃澘", description = "涓嬭浇姘斾綋宸ュ崟鏁版嵁瀵煎叆妯℃澘")
-    @RequiresPermissions("gasPipeline:mo:template")
-    @Log(title = "涓嬭浇姘斾綋宸ュ崟鏁版嵁瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
+//    @RequiresPermissions("gasPipeline:mo:template")
+//    @Log(title = "涓嬭浇姘斾綋宸ュ崟鏁版嵁瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
     @GetMapping("/template")
     public ResponseEntity<ByteArrayResource> exportTemplate() {
-        byte[] file = IOUtils.resourceToByteArray("/templates/涓婁紶姘斾綋宸ュ崟鏁版嵁妯℃澘.xlsx");
+        byte[] file = IOUtils.resourceToByteArray("/templates/姘斾綋宸ュ崟鏁版嵁妯℃澘v1.0.xlsx");
         ByteArrayResource resource = new ByteArrayResource(file);
         return ResponseEntity.ok()
+                .header("Access-Control-Expose-Headers", HttpHeaders.CONTENT_DISPOSITION)
                 .header(HttpHeaders.CONTENT_DISPOSITION,
                         String.format("attachment;filename=%s", URLEncoder.encode("姘斾綋宸ュ崟鏁版嵁妯℃澘.xlsx", StandardCharsets.UTF_8)))
                 .header(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
index 48d9042..faf5e0a 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
@@ -70,13 +70,14 @@
      */
     @SneakyThrows
     @Operation(summary = "涓嬭浇姘斾綋棰勬祴鏁版嵁瀵煎叆妯℃澘", description = "涓嬭浇姘斾綋棰勬祴鏁版嵁瀵煎叆妯℃澘")
-    @RequiresPermissions("gasPipeline:prediction:template")
-    @Log(title = "涓嬭浇姘斾綋棰勬祴鏁版嵁瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
+//    @RequiresPermissions("gasPipeline:prediction:template")
+//    @Log(title = "涓嬭浇姘斾綋棰勬祴鏁版嵁瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
     @GetMapping("/template")
     public ResponseEntity<ByteArrayResource> exportTemplate() {
-        byte[] file = IOUtils.resourceToByteArray("/templates/涓婁紶姘斾綋棰勬祴鏁版嵁妯℃澘.xlsx");
+        byte[] file = IOUtils.resourceToByteArray("/templates/姘斾綋棰勬祴鏁版嵁妯℃澘v1.0.xlsx");
         ByteArrayResource resource = new ByteArrayResource(file);
         return ResponseEntity.ok()
+                .header("Access-Control-Expose-Headers", HttpHeaders.CONTENT_DISPOSITION)
                 .header(HttpHeaders.CONTENT_DISPOSITION,
                         String.format("attachment;filename=%s", URLEncoder.encode("姘斾綋棰勬祴鏁版嵁妯℃澘.xlsx", StandardCharsets.UTF_8)))
                 .header(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelineCapacityPlan.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelineCapacityPlan.java
index 46eb05a..3751687 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelineCapacityPlan.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelineCapacityPlan.java
@@ -2,9 +2,14 @@
 
 import com.aps.common.core.annotation.Excel;
 import com.aps.common.core.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
+import org.springframework.data.annotation.Id;
 
 import java.math.BigDecimal;
 
@@ -14,12 +19,16 @@
  * @author hjy
  * @date 2025-04-24
  */
+@Data
 @Schema(description = "姘斾綋绠¤矾浜ц兘瑙勫垝瀹炰綋绫�")
 public class ApsGasPipelineCapacityPlan extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
+    @Id
+    @TableId(type = IdType.AUTO)
     /** 涓婚敭id */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
     @Schema(description = "涓婚敭id", type = "Long")
     private Long id;
 
@@ -58,6 +67,7 @@
     @Schema(description = "鏃ヤ骇鍑哄崟浣�", type = "String")
     private String dayProduceUnit;
 
+
     /** 浜哄憳鏁伴噺 */
     @Excel(name = "浜哄憳鏁伴噺")
     @Schema(description = "浜哄憳鏁伴噺", type = "BigDecimal")
@@ -83,6 +93,12 @@
     @Schema(description = "宸ュ巶浠g爜", type = "String")
     private String orgCode;
 
+
+    /** 杞﹂棿 */
+    @Excel(name = "杞﹂棿")
+    @Schema(description = "杞﹂棿", type = "String")
+    private String workshop;
+
     public void setOrgCode(String orgCode)
     {
         this.orgCode = orgCode;
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java b/aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java
index ec1945d..1714dab 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java
@@ -2,8 +2,8 @@
 
 public enum PLAN_TASK_STATUS {
     IN_PROCESS("InProgress","杩涜涓�"),
-    FINISHED("Finished","瀹屾垚");
-
+    FINISHED("Finished","瀹屾垚"),
+    ERROR("Error","澶辫触");
     private String code;
     private String desc;
 
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelineCapacityPlanMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelineCapacityPlanMapper.java
index 329bc9b..22ddc1c 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelineCapacityPlanMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelineCapacityPlanMapper.java
@@ -1,6 +1,7 @@
 package com.aps.core.mapper;
 
 import com.aps.core.domain.ApsGasPipelineCapacityPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -12,7 +13,7 @@
  * @date 2025-04-24
  */
 @Mapper
-public interface ApsGasPipelineCapacityPlanMapper 
+public interface ApsGasPipelineCapacityPlanMapper extends BaseMapper<ApsGasPipelineCapacityPlan>
 {
     /**
      * 鏌ヨ姘斾綋绠¤矾浜ц兘瑙勫垝
@@ -61,4 +62,6 @@
      * @return 缁撴灉
      */
     public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids);
+
+    void deleteByDateAndFactory(String year, String month, String factory, String major);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireBatchService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireBatchService.java
index 7e619a5..aeedfb3 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireBatchService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireBatchService.java
@@ -63,5 +63,5 @@
     String getNewBatchNumber();
 
     @Transactional
-    void initRequireBatch();
+    void initRequireBatch(String batchNumber);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireErrorService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireErrorService.java
index 25bf22c..d3958e1 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireErrorService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/IApsPlateStandardRequireErrorService.java
@@ -1,6 +1,8 @@
 package com.aps.core.service.ApsPlate;
 
 import java.util.List;
+
+import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire;
 import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireError;
 
 /**
@@ -58,4 +60,6 @@
      * @return 缁撴灉
      */
     public int deleteApsPlateStandardRequireErrorById(Long id);
+
+    void saveRequireError(ApsPlateStandardRequire require, String message);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
index c985f36..794b14f 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsBomHeaderService.java
@@ -66,4 +66,6 @@
      * @return
      */
     public boolean setBomDataToRedis(String orgCode);
+
+    Integer getBomKeys(String orgCode);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipelineCapacityPlanService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipelineCapacityPlanService.java
index cfb8e5b..722bb30 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipelineCapacityPlanService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipelineCapacityPlanService.java
@@ -59,4 +59,6 @@
      * @return 缁撴灉
      */
     public int deleteApsGasPipelineCapacityPlanById(Long id);
+
+    void copyPlan(String date, String factory, String major, String toStart, String toEnd);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
index e5ab958..939cd2b 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomHeaderServiceImpl.java
@@ -131,4 +131,8 @@
         }
         return true;
     }
+    @Override
+    public Integer getBomKeys(String orgCode){
+        return redisTemplate.keys("BOM:BOM_"+orgCode+"*").size();
+    }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java
index 0b9717b..bd7b3c8 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsBomServiceImpl.java
@@ -140,10 +140,6 @@
                 bomLineList.add(apsBom);
             }
         }
-//        else {
-//            bomLineList = selectApsBomLineList(plant, itemNumber);
-//        }
-
         return bomLineList;
     }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelineCapacityPlanServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelineCapacityPlanServiceImpl.java
index f175d09..49a8da2 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelineCapacityPlanServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelineCapacityPlanServiceImpl.java
@@ -5,56 +5,59 @@
 import com.aps.core.domain.ApsGasPipelineCapacityPlan;
 import com.aps.core.mapper.ApsGasPipelineCapacityPlanMapper;
 import com.aps.core.service.IApsGasPipelineCapacityPlanService;
+import lombok.SneakyThrows;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 /**
  * 姘斾綋绠¤矾浜ц兘瑙勫垝Service涓氬姟灞傚鐞�
- * 
+ *
  * @author hjy
  * @date 2025-04-24
  */
 @Service
-public class ApsGasPipelineCapacityPlanServiceImpl implements IApsGasPipelineCapacityPlanService 
-{
+public class ApsGasPipelineCapacityPlanServiceImpl implements IApsGasPipelineCapacityPlanService {
     @Autowired
     private ApsGasPipelineCapacityPlanMapper apsGasPipelineCapacityPlanMapper;
 
     /**
      * 鏌ヨ姘斾綋绠¤矾浜ц兘瑙勫垝
-     * 
+     *
      * @param id 姘斾綋绠¤矾浜ц兘瑙勫垝涓婚敭
      * @return 姘斾綋绠¤矾浜ц兘瑙勫垝
      */
     @Override
-    public ApsGasPipelineCapacityPlan selectApsGasPipelineCapacityPlanById(Long id)
-    {
+    public ApsGasPipelineCapacityPlan selectApsGasPipelineCapacityPlanById(Long id) {
         return apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanById(id);
     }
 
     /**
      * 鏌ヨ姘斾綋绠¤矾浜ц兘瑙勫垝鍒楄〃
-     * 
+     *
      * @param apsGasPipelineCapacityPlan 姘斾綋绠¤矾浜ц兘瑙勫垝
      * @return 姘斾綋绠¤矾浜ц兘瑙勫垝
      */
     @Override
-    public List<ApsGasPipelineCapacityPlan> selectApsGasPipelineCapacityPlanList(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public List<ApsGasPipelineCapacityPlan> selectApsGasPipelineCapacityPlanList(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
         return apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan);
     }
 
     /**
      * 鏂板姘斾綋绠¤矾浜ц兘瑙勫垝
-     * 
+     *
      * @param apsGasPipelineCapacityPlan 姘斾綋绠¤矾浜ц兘瑙勫垝
      * @return 缁撴灉
      */
     @Override
-    public int insertApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public int insertApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
         apsGasPipelineCapacityPlan.setCreateTime(DateUtils.getNowDate());
         apsGasPipelineCapacityPlan.setCreateBy(SecurityUtils.getUsername());
         return apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan);
@@ -62,13 +65,12 @@
 
     /**
      * 淇敼姘斾綋绠¤矾浜ц兘瑙勫垝
-     * 
+     *
      * @param apsGasPipelineCapacityPlan 姘斾綋绠¤矾浜ц兘瑙勫垝
      * @return 缁撴灉
      */
     @Override
-    public int updateApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan)
-    {
+    public int updateApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) {
         apsGasPipelineCapacityPlan.setUpdateTime(DateUtils.getNowDate());
         apsGasPipelineCapacityPlan.setUpdateBy(SecurityUtils.getUsername());
         return apsGasPipelineCapacityPlanMapper.updateApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan);
@@ -76,25 +78,73 @@
 
     /**
      * 鎵归噺鍒犻櫎姘斾綋绠¤矾浜ц兘瑙勫垝
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑姘斾綋绠¤矾浜ц兘瑙勫垝涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids)
-    {
+    public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids) {
         return apsGasPipelineCapacityPlanMapper.deleteApsGasPipelineCapacityPlanByIds(ids);
     }
 
     /**
      * 鍒犻櫎姘斾綋绠¤矾浜ц兘瑙勫垝淇℃伅
-     * 
+     *
      * @param id 姘斾綋绠¤矾浜ц兘瑙勫垝涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteApsGasPipelineCapacityPlanById(Long id)
-    {
+    public int deleteApsGasPipelineCapacityPlanById(Long id) {
         return apsGasPipelineCapacityPlanMapper.deleteApsGasPipelineCapacityPlanById(id);
     }
+
+    @SneakyThrows
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void copyPlan(String date, String factory, String major, String toStart, String toEnd) {
+
+        String[] dtSrc = date.split("-");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+        Calendar dtStart = Calendar.getInstance();
+        dtStart.setTime(sdf.parse(toStart));
+        dtStart.set(Calendar.DAY_OF_MONTH, 1);
+        Calendar dtEnd = Calendar.getInstance();
+        dtEnd.setTime(sdf.parse(toEnd));
+        dtEnd.set(Calendar.DAY_OF_MONTH, 2);
+
+        ApsGasPipelineCapacityPlan plan = new ApsGasPipelineCapacityPlan();
+        plan.setYear(Integer.valueOf(dtSrc[0]).toString());
+        plan.setMonth(Integer.valueOf(dtSrc[1]).toString());
+        plan.setOrgCode(factory);
+        plan.setMajor(major);
+        List<ApsGasPipelineCapacityPlan> templatePlans = apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanList(plan);
+        templatePlans.forEach(p -> {
+            p.setCreateBy(SecurityUtils.getUsername());
+            p.setCreateTime(new Date());
+            p.setUpdateBy(null);
+            p.setUpdateTime(null);
+//                apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(p);
+        });
+
+        while (dtStart.before(dtEnd)) {
+            String year = dtStart.get(Calendar.YEAR) + "";
+            String month = (dtStart.get(Calendar.MONTH) + 1) + "";
+            apsGasPipelineCapacityPlanMapper.deleteByDateAndFactory(
+                    year,
+                    month,
+                    factory,
+                    major
+            );
+            templatePlans.forEach(p -> {
+                p.setId(null);
+                p.setYear(year);
+                p.setMonth(month);
+//                apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(p);
+            });
+            apsGasPipelineCapacityPlanMapper.insert(templatePlans);
+
+            dtStart.add(Calendar.MONTH, 1);
+        }
+
+    }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
index 6469be7..d00d0af 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
@@ -90,36 +90,37 @@
     }
 
     @Override
-    public AjaxResult generatorPlan()
-    {
+    public AjaxResult generatorPlan() {
         String plateOrderPlanKey = PLATE_ORDER_PLAN.getKey();
         boolean existsLock = redisLockUtils.existLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
-        if (existsLock){
+        if (existsLock) {
             return AjaxResult.warn("閽i噾宸ュ崟璁″垝浠诲姟姝e湪鎵ц涓�!");
         }
-        LambdaQueryWrapper<ApsPlanTask> queryWrapper=new LambdaQueryWrapper<>();
-        queryWrapper.eq(ApsPlanTask::getTaskType,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
-        queryWrapper.eq(ApsPlanTask::getTaskStatus,PLAN_TASK_STATUS.IN_PROCESS.getCode());
+        LambdaQueryWrapper<ApsPlanTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ApsPlanTask::getTaskType, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+        queryWrapper.eq(ApsPlanTask::getTaskStatus, PLAN_TASK_STATUS.IN_PROCESS.getCode());
         boolean existsDbTask = mapper.exists(queryWrapper);
-        if (existsDbTask){
+        if (existsDbTask) {
             return AjaxResult.warn("閽i噾宸ュ崟璁″垝浠诲姟姝e湪鎵ц涓�!!");
         }
+        String currentBatchNum = requireBatchService.getNewBatchNumber();
         try {
-            redisLockUtils.getLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode(), 3*60L);
-            String batchNum= requireBatchService.getNewBatchNumber();
-            this.savePlanTask(batchNum);
-            apsPlateStandardRequireService.generatorPlan(batchNum);
-            this.updateTaskStatus(batchNum, PLAN_TASK_STATUS.FINISHED);
+            redisLockUtils.getLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode(), 15 * 60L);
+            this.savePlanTask(currentBatchNum);
+            //Thread.sleep(60*1000);
+            apsPlateStandardRequireService.generatorPlan(currentBatchNum);
             /*娓呴櫎宸茬粡瀛樺湪鐨� 宸ュ崟璁″垝瀹屽伐鏃堕棿*/
             orderEndDayMapper.batchRemove();
-            log.info("璁″垝浠诲姟鎵ц瀹屾垚!"+batchNum);
+            this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.FINISHED);
+            log.info("璁″垝浠诲姟鎵ц瀹屾垚!" + currentBatchNum);
             return success();
-        }catch (Exception e){
-            redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
-            log.error("璁″垝浠诲姟鎵ц澶辫触!"+e.getMessage());
-            return AjaxResult.error("璁″垝浠诲姟鎵ц澶辫触!"+e.getMessage());
-        }finally {
-            redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+        } catch (Exception e) {
+            redisLockUtils.releaseLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
+            log.error("璁″垝浠诲姟鎵ц澶辫触!" + e.getMessage());
+            this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.ERROR);
+            return AjaxResult.error("璁″垝浠诲姟鎵ц澶辫触!" + e.getMessage());
+        } finally {
+            redisLockUtils.releaseLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode());
         }
     }
 
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java
index 2315067..2436835 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessShopStatServiceImpl.java
@@ -18,6 +18,7 @@
 import com.aps.core.domain.ApsPlate.ApsPlateProcessShopStat;
 import com.aps.core.domain.ApsPlate.ApsPlateProcessStat;
 import com.aps.core.mapper.*;
+import com.aps.core.service.ApsPlate.IApsPlateProcessStatService;
 import com.aps.system.api.domain.SysDictData;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -59,6 +60,9 @@
 
     @Resource
     private ApsPlatePlanMapper apsPlatePlanMapper;
+    @Autowired
+    private IApsPlateProcessStatService apsPlateProcessStatService;
+
 
 
     /**
@@ -136,6 +140,7 @@
     @Override
     public void saveShopStat() {
         try {
+            apsPlateProcessStatService.savePlateProcessStat();
             // 寮�濮嬩箣鍓嶅厛鍒犻櫎鎵�鏈夊巻鍙叉暟鎹�
             apsPlateProcessShopStatMapper.deleteAll();
 
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java
index 6544ed3..410a1d6 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java
@@ -2,12 +2,15 @@
 
 import java.math.BigDecimal;
 import java.time.*;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import cn.hutool.core.util.IdUtil;
 import com.aps.common.core.utils.uuid.IdUtils;
 import com.aps.common.security.utils.SecurityUtils;
+import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.aps.core.mapper.ApsPlateProcessStatMapper;
@@ -109,9 +112,11 @@
     public void savePlateProcessStat() {
         String batchNum = IdUtils.fastSimpleUUID();
         List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat();
+        ApsPlateProcessStat apsPlateProcessStat = tempList.stream().filter(x -> x.getWorkOrderNo().equals("MO-250409003498")).findFirst().get();
         Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo));
         Boolean hasBefore = false;
         LocalDateTime now = LocalDateTime.now();
+        List<ApsPlateProcessStat> totalList=new ArrayList<>();
         for (Map.Entry<String, List<ApsPlateProcessStat>> entry : groupByOrderNo.entrySet()) {
             List<ApsPlateProcessStat> statPerOrder = entry.getValue();
             /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/
@@ -176,13 +181,21 @@
                     }
                 }
                 last = stat;
-                apsPlateProcessStatMapper.insertApsPlateProcessStat(stat);
+                totalList.add(stat);
+                //apsPlateProcessStatMapper.insertApsPlateProcessStat(stat);
             }
             hasBefore=false;
-
         }
         apsPlateProcessStatMapper.removeOtherStat(batchNum);
-
+        if(!totalList.isEmpty()){
+            int batchSize = 1000;
+            totalList.forEach(x->x.setId(String.valueOf(IdUtil.getSnowflakeNextId())));
+            for (int i = 0; i < totalList.size(); i += batchSize) {
+                int end = Math.min(i + batchSize, totalList.size());
+                List<ApsPlateProcessStat> batch = totalList.subList(i, end);
+                apsPlateProcessStatMapper.batchInsertPlateStat(batch);
+            }
+        }
     }
 
 
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireBatchServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireBatchServiceImpl.java
index e765fc6..5046800 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireBatchServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireBatchServiceImpl.java
@@ -136,16 +136,12 @@
 
     @Transactional
     @Override
-    public void initRequireBatch() {
-        ApsPlateStandardRequireBatch batch=apsPlateStandardRequireBatchMapper.selectLastRequireBatch();
-        if (batch!=null){
-            String batchNumber = batch.getBatchNumber();
-            apsPlateStandardRequireMapper.deleteLastPatch(batchNumber);
-            apsPlateStandardRequireBomOrderDetailMapper.deleteLastPatch(batchNumber);
-            apsPlateStandardRequireBomStockDetailMapper.deleteLastPatch(batchNumber);
-            apsPlateStandardRequireErrorMapper.deleteLastPatch(batchNumber);
-            apsPlatePlanMapper.initUnMatchQty();
-            apsMaterialStorageManagementMapper.initRemainderStock();
-        }
+    public void initRequireBatch(String currentBatchNumber) {
+        apsPlateStandardRequireMapper.deleteLastPatch(currentBatchNumber);
+        apsPlateStandardRequireBomOrderDetailMapper.deleteLastPatch(currentBatchNumber);
+        apsPlateStandardRequireBomStockDetailMapper.deleteLastPatch(currentBatchNumber);
+        apsPlateStandardRequireErrorMapper.deleteLastPatch(currentBatchNumber);
+        apsPlatePlanMapper.initUnMatchQty();
+        apsMaterialStorageManagementMapper.initRemainderStock();
     }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireErrorServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireErrorServiceImpl.java
index 606a101..a342cee 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireErrorServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireErrorServiceImpl.java
@@ -1,7 +1,11 @@
 package com.aps.core.service.impl.ApsPlate;
 
 import java.util.List;
+
+import cn.hutool.core.util.IdUtil;
 import com.aps.common.core.utils.DateUtils;
+import com.aps.common.security.utils.SecurityUtils;
+import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper;
@@ -93,4 +97,21 @@
     {
         return apsPlateStandardRequireErrorMapper.deleteApsPlateStandardRequireErrorById(id);
     }
+
+    @Override
+    public void saveRequireError(ApsPlateStandardRequire require, String message) {
+        ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder()
+                .id(IdUtil.getSnowflakeNextId())
+                .requireId(require.getId())
+                .batchNumber(require.getBatchNumber())
+                .docNum(require.getDocNum())
+                .itemNum(require.getBomLineCode())
+                .orgCode(require.getOrgCode())
+                .message(message)
+                .delFlag("0")
+                .build();
+        data.setCreateBy(SecurityUtils.getUsername());
+        data.setCreateTime(DateUtils.getNowDate());
+        apsPlateStandardRequireErrorMapper.insertApsPlateStandardRequireError(data);
+    }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java
index e6b8cd9..a7653f6 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java
@@ -1,29 +1,27 @@
 package com.aps.core.service.impl.ApsPlate;
 
-import java.math.BigDecimal;
-import java.util.*;
-
 import cn.hutool.core.util.IdUtil;
 import com.aps.common.core.utils.DateUtils;
 import com.aps.common.security.utils.DictUtils;
 import com.aps.common.security.utils.SecurityUtils;
-import com.aps.core.domain.*;
-import com.aps.core.domain.ApsPlate.ApsPlatePlan;
-import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail;
-import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail;
+import com.aps.core.domain.ApsBom;
+import com.aps.core.domain.ApsMaterialStorageManagement;
+import com.aps.core.domain.ApsPlate.*;
+import com.aps.core.domain.ApsStandardProcessRouteLine;
 import com.aps.core.mapper.*;
-import com.aps.core.service.*;
 import com.aps.core.service.ApsPlate.*;
+import com.aps.core.service.IApsBomService;
+import com.aps.core.service.IApsMaterialStorageManagementService;
+import com.aps.core.service.IApsStandardProcessRouteLineService;
 import com.aps.system.api.domain.SysDictData;
 import jakarta.annotation.Resource;
-import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire;
-import com.aps.core.mapper.ApsPlateStandardRequireMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 
 /**
  * 閽i噾宸ュ崟鏍囧噯闇�姹係ervice涓氬姟灞傚鐞�
@@ -39,29 +37,17 @@
     private ApsPlateStandardRequireMapper apsPlateStandardRequireMapper;
 
     @Resource
-    private ApsPlateStandardRequireBatchMapper requireBatchMapper;
-
-    @Resource
     ApsPlatePlanMapper platePlanMapper;
 
     @Resource
-    ApsBomHeaderMapper bomHeaderMapper;
-    @Resource
     IApsBomService bomLineService;
-
-    @Resource
-    ApsMaterialStorageManagementMapper itemStorageMapper;
 
     @Resource
     ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper;
 
     @Resource
     IApsPlateStandardRequireBomStockDetailService bomStockDetailService;
-    @Resource
-    ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
 
-    @Resource
-    ApsStandardProcessRouteLineMapper ApsStandardProcessRouteLineMapper;
 
     @Resource
     ApsPlateStandardRequireBomOrderDetailMapper plateBomOrderDetailMapper;
@@ -76,10 +62,11 @@
     IApsStandardProcessRouteLineService routeLineService;
 
     @Resource
-    IApsPlateStandardRequireBatchService requireBatchService;
+    IApsPlateStandardRequireErrorService requireErrorService;
     @Resource
     private IApsMaterialStorageManagementService storageManagementService;
-
+    @Resource
+    IApsPlateStandardRequireBatchService requireBatchService;
     /**
      * 鏌ヨ閽i噾宸ュ崟鏍囧噯闇�姹�
      * 
@@ -167,9 +154,7 @@
     @Transactional
     @Override
     public void generatorPlan(String batchNum){
-
-        /*鍒濆鍖栨暟鎹�*/
-        requireBatchService.initRequireBatch();
+        requireBatchService.initRequireBatch(batchNum);
         /*瀹氫箟宸ュ巶涓哄崡閫� */
         String plantCode="FORTUNA";
         /*鑾峰彇閽i噾涓诲崟淇℃伅*/
@@ -296,7 +281,10 @@
         if (itemStorageOpt.isPresent()) {
 
             ApsMaterialStorageManagement     itemStorage=itemStorageOpt.get();
-            BigDecimal remainderStock =itemStorage.getRemainderStock();
+            BigDecimal remainderStock =BigDecimal.ZERO;
+            if(null!=itemStorage.getRemainderStock()){
+                remainderStock = itemStorage.getRemainderStock();
+            }
             /*璁$畻鍑�闇�姹� 榛樿=闇�姹傛暟閲�*/
             if (remainderStock.compareTo(BigDecimal.ZERO) == 0) {
                 require.setNetRequirement(require.getBomUseAmount());
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
index b9b2ac3..0185f67 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
@@ -12,6 +12,7 @@
 import com.aps.core.domain.ApsStandardProcessRouteHeader;
 import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper;
 import com.aps.core.mapper.ApsStandardProcessRouteHeaderMapper;
+import com.aps.core.service.ApsPlate.IApsPlateStandardRequireErrorService;
 import jakarta.annotation.Resource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -34,7 +35,7 @@
     @Resource
     ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
     @Resource
-    ApsPlateStandardRequireErrorMapper requireErrorMapper;
+    IApsPlateStandardRequireErrorService requireErrorService;
     @Resource
     private RedisTemplate redisTemplate;
 
@@ -141,7 +142,7 @@
             ret.setRouteTime(totalRouteTime);
             ret.setRouteId(routeHeader.getRouteId());
         }else {
-            saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
+            requireErrorService.saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
         }
         // 杩斿洖鎬诲伐鏃�
         return ret;
@@ -170,7 +171,7 @@
             ret.setRouteTime(totalRouteTime.multiply(netRequirement));
             return  ret;
         } else {
-            saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
+            requireErrorService.saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
             /*// 鏌ヨ鏍囧噯宸ヨ壓璺嚎澶撮儴淇℃伅
             Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemCode).stream().findFirst();
             if (firstProcessRoute.isPresent()) {
@@ -193,19 +194,4 @@
         }
     }
 
-    private void saveRequireError(ApsPlateStandardRequire require,String message) {
-        ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder()
-                .id(IdUtil.getSnowflakeNextId())
-                .requireId(require.getId())
-                .batchNumber(require.getBatchNumber())
-                .docNum(require.getDocNum())
-                .itemNum(require.getBomLineCode())
-                .orgCode(require.getOrgCode())
-                .message(message)
-                .delFlag("0")
-                .build();
-        data.setCreateBy(SecurityUtils.getUsername());
-        data.setCreateTime(DateUtils.getNowDate());
-        requireErrorMapper.insertApsPlateStandardRequireError(data);
-    }
 }
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
index aaa2a8e..174bc86 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsBomHeaderMapper.xml
@@ -109,13 +109,10 @@
         LEFT JOIN aps_bom_line b on a.bom_header_id=b.bom_header_id
         LEFT JOIN aps_material_management d on b.item_code=d.item_number
         LEFT JOIN aps_material_management c on a.item_code=c.item_number
-        <where>
-            <if test="orgCode != null and orgCode != ''">
-                and a.org_code=#{orgCode} and d.applicable_factories=#{orgCode}
-            </if>
-            and d.material_type='鍒堕�犱欢'
-            and c.material_type='鍒堕�犱欢'
-        </where>
+        where   d.material_type='鍒堕�犱欢' and c.material_type='鍒堕�犱欢'
+        <if test="orgCode != null and orgCode != ''">
+            and a.org_code=#{orgCode} and d.applicable_factories=#{orgCode}
+        </if>
         ORDER BY mainItemCode
     </select>
 </mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineCapacityPlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineCapacityPlanMapper.xml
index 329ee58..5c16e41 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineCapacityPlanMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineCapacityPlanMapper.xml
@@ -10,6 +10,7 @@
         <result property="year"    column="year"    />
         <result property="month"    column="month"    />
         <result property="major"    column="major"    />
+        <result property="workshop"    column="workshop"    />
         <result property="dayProduceType"    column="day_produce_type"    />
         <result property="dayProduceNum"    column="day_produce_num"    />
         <result property="dayProduceUnit"    column="day_produce_unit"    />
@@ -26,7 +27,7 @@
     </resultMap>
 
     <sql id="selectApsGasPipelineCapacityPlanVo">
-        select id, process_name, year, month, major, day_produce_type, day_produce_num, day_produce_unit, personnel_number, day_produce_all_num, days, month_produce_all_num, remark, create_by, create_time, update_by, update_time, org_code from aps_gas_pipeline_capacity_plan
+        select id, process_name, year, month, major, workshop, day_produce_type, day_produce_num, day_produce_unit, personnel_number, day_produce_all_num, days, month_produce_all_num, remark, create_by, create_time, update_by, update_time, org_code from aps_gas_pipeline_capacity_plan
     </sql>
 
     <select id="selectApsGasPipelineCapacityPlanList" parameterType="com.aps.core.domain.ApsGasPipelineCapacityPlan" resultMap="ApsGasPipelineCapacityPlanResult">
@@ -36,6 +37,7 @@
             <if test="year != null  and year != ''"> and year = #{year}</if>
             <if test="month != null  and month != ''"> and month = #{month}</if>
             <if test="major != null  and major != ''"> and major = #{major}</if>
+            <if test="workshop != null  and workshop != ''"> and workshop = #{workshop}</if>
             <if test="dayProduceType != null  and dayProduceType != ''"> and day_produce_type = #{dayProduceType}</if>
             <if test="dayProduceNum != null "> and day_produce_num = #{dayProduceNum}</if>
             <if test="dayProduceUnit != null  and dayProduceUnit != ''"> and day_produce_unit = #{dayProduceUnit}</if>
@@ -63,6 +65,7 @@
             <if test="year != null">year,</if>
             <if test="month != null">month,</if>
             <if test="major != null">major,</if>
+            <if test="workshop != null">workshop,</if>
             <if test="dayProduceType != null">day_produce_type,</if>
             <if test="dayProduceNum != null">day_produce_num,</if>
             <if test="dayProduceUnit != null">day_produce_unit,</if>
@@ -83,6 +86,7 @@
             <if test="year != null">#{year},</if>
             <if test="month != null">#{month},</if>
             <if test="major != null">#{major},</if>
+            <if test="workshop != null">workshop,</if>
             <if test="dayProduceType != null">#{dayProduceType},</if>
             <if test="dayProduceNum != null">#{dayProduceNum},</if>
             <if test="dayProduceUnit != null">#{dayProduceUnit},</if>
@@ -106,6 +110,7 @@
             <if test="year != null">year = #{year},</if>
             <if test="month != null">month = #{month},</if>
             <if test="major != null">major = #{major},</if>
+            <if test="workshop != null">workshop,</if>
             <if test="dayProduceType != null">day_produce_type = #{dayProduceType},</if>
             <if test="dayProduceNum != null">day_produce_num = #{dayProduceNum},</if>
             <if test="dayProduceUnit != null">day_produce_unit = #{dayProduceUnit},</if>
@@ -133,4 +138,12 @@
             #{id}
         </foreach>
     </delete>
+
+    <delete id="deleteByDateAndFactory" >
+        delete from aps_gas_pipeline_capacity_plan
+               where year = #{year}
+                   and month = #{month}
+                   and org_code = #{factory}
+                   and major = #{major}
+    </delete>
 </mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml
index a7f7adc..2db812a 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateProcessStatMapper.xml
@@ -173,10 +173,13 @@
             production_quantity,
             standard_time,
             process_total_time,
+            process_plan_start_day,
             process_plan_end_day,
+            order_plan_end_day,
             batch_number,
             create_by,
-            del_flag
+            del_flag,
+            warning
         )
         values
         <foreach collection="list" item="item" index="index" separator=",">
@@ -190,10 +193,13 @@
             #{item.productionQuantity},
             #{item.standardTime},
             #{item.processTotalTime},
+            #{item.processPlanStartDay},
             #{item.processPlanEndDay},
+            #{item.orderPlanEndDay},
             #{item.batchNumber},
             #{item.createBy},
-            '0'
+            '0',
+            #{item.warning}
         )
         </foreach>
     </insert>
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomOrderDetailMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomOrderDetailMapper.xml
index 69ff69f..306615d 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomOrderDetailMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomOrderDetailMapper.xml
@@ -127,7 +127,7 @@
     </delete>
 
     <update id="deleteLastPatch" parameterType="String">
-        update aps_plate_standard_require_bom_order_detail set del_flag = '1' where batch_number = #{batchNumber}
+        update aps_plate_standard_require_bom_order_detail set del_flag = '1' where del_flag = '0' and batch_number != #{batchNumber}
     </update>
 
     <insert id="batchInsert" parameterType="com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomStockDetailMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomStockDetailMapper.xml
index 4ede8e3..8a6bfc3 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomStockDetailMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireBomStockDetailMapper.xml
@@ -120,7 +120,9 @@
     </delete>
 
     <update id="deleteLastPatch" parameterType="String">
-        update aps_plate_standard_require_bom_stock_detail set del_flag = '1' where batch_number = #{batchNumber}
+        update aps_plate_standard_require_bom_stock_detail
+        set del_flag = '1'
+        where del_flag = '0' and batch_number != #{batchNumber}
     </update>
 
     <insert id="batchInsert" parameterType="com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml
index bba08bb..5ab7280 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireErrorMapper.xml
@@ -103,6 +103,8 @@
         </foreach>
     </delete>
     <update id="deleteLastPatch" parameterType="String">
-        update aps_plate_standard_require_error set del_flag = '1' where batch_number = #{batchNumber}
+        update aps_plate_standard_require_error
+        set del_flag = '1'
+        where del_flag = '0' and batch_number != #{batchNumber}
     </update>
 </mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireMapper.xml
index 1e16f2c..b8d1c57 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateStandardRequireMapper.xml
@@ -226,6 +226,6 @@
         </foreach>
     </insert>
     <update id="deleteLastPatch" parameterType="String">
-        update aps_plate_standard_require set del_flag = '1' where batch_number = #{batchNumber}
+        update aps_plate_standard_require set del_flag = '1' where del_flag = '0' and batch_number != #{batchNumber}
     </update>
 </mapper>
\ No newline at end of file
diff --git "a/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277.xlsx" "b/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277.xlsx"
deleted file mode 100644
index f3a4177..0000000
--- "a/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277.xlsx" "b/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277.xlsx"
deleted file mode 100644
index 6a261c6..0000000
--- "a/aps-modules/aps-core/src/main/resources/templates/\344\270\212\344\274\240\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx" "b/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx"
new file mode 100644
index 0000000..e67251f
--- /dev/null
+++ "b/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\345\267\245\345\215\225\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx"
Binary files differ
diff --git "a/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx" "b/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx"
new file mode 100644
index 0000000..50fb427
--- /dev/null
+++ "b/aps-modules/aps-core/src/main/resources/templates/\346\260\224\344\275\223\351\242\204\346\265\213\346\225\260\346\215\256\346\250\241\346\235\277v1.0.xlsx"
Binary files differ
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
index 3e6c84b..49daf90 100644
--- a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
@@ -1,5 +1,6 @@
 package com.aps.job.service.impl;
 
+import cn.hutool.core.collection.ListUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -179,11 +180,16 @@
             deleteAllApsWeldSeamStandardJob();
             
             // 鎵归噺鎻掑叆鏂版暟鎹�
-            batchInsertApsWeldSeamStandardJob(jobList);
-            
+            List<List<ApsWeldSeamStandardJob>> dataGroupInterface = ListUtil.split(jobList, 1000);
+            for (List<ApsWeldSeamStandardJob> data : dataGroupInterface) {
+                batchInsertApsWeldSeamStandardJob(data);
+            }
+
             // 鍚屾鏁版嵁鍒颁笟鍔¤〃
-            syncToBizTable(jobList);
-            
+            List<List<ApsWeldSeamStandardJob>> dataGroup = ListUtil.split(jobList, 1000);
+            for (List<ApsWeldSeamStandardJob> data : dataGroup) {
+                syncToBizTable(data);
+            }
             return true;
         } catch (Exception e) {
             log.error("鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁寮傚父", e);
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/util/AbstractQuartzJob.java b/aps-modules/aps-job/src/main/java/com/aps/job/util/AbstractQuartzJob.java
index 833fca7..2db5dbd 100644
--- a/aps-modules/aps-job/src/main/java/com/aps/job/util/AbstractQuartzJob.java
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/util/AbstractQuartzJob.java
@@ -78,7 +78,11 @@
         sysJobLog.setStartTime(startTime);
         sysJobLog.setStopTime(new Date());
         long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
-        sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" + runMs + "姣");
+        long totalSeconds = runMs / 1000;
+        long minutes = totalSeconds / 60;
+        long seconds = totalSeconds % 60;
+        String formattedTime = minutes + "鍒�" + seconds + "绉�";
+        sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" +formattedTime);
         if (e != null)
         {
             sysJobLog.setStatus("1");

--
Gitblit v1.9.3