From 6c3b6d53a8a41777f0dc5f6beb6dd5db6a3f89f4 Mon Sep 17 00:00:00 2001
From: wenwj <‘1106994300@qq.com>
Date: 星期五, 11 四月 2025 15:37:19 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java                  |  190 +++++++++++++++
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml                |  134 +++++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java            |   74 ++++++
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java |  145 ++++++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java    |  105 ++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java         |   62 +++++
 6 files changed, 710 insertions(+), 0 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java
new file mode 100644
index 0000000..2540418
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java
@@ -0,0 +1,105 @@
+package com.aps.core.controller;
+
+import java.util.List;
+
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.aps.common.log.annotation.Log;
+import com.aps.common.log.enums.BusinessType;
+import com.aps.common.security.annotation.RequiresPermissions;
+import com.aps.core.domain.ApsPartRouteStat;
+import com.aps.core.service.IApsPartRouteStatService;
+import com.aps.common.core.web.controller.BaseController;
+import com.aps.common.core.web.domain.AjaxResult;
+import com.aps.common.core.utils.poi.ExcelUtil;
+import com.aps.common.core.web.page.TableDataInfo;
+
+/**
+ * 闆朵欢缁熻琛–ontroller
+ * 
+ * @author zhl
+ * @date 2025-04-11
+ */
+@RestController
+@RequestMapping("/ApsPartRouteStat")
+public class ApsPartRouteStatController extends BaseController
+{
+    @Autowired
+    private IApsPartRouteStatService apsPartRouteStatService;
+
+    /**
+     * 鏌ヨ闆朵欢缁熻琛ㄥ垪琛�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:list")
+    @GetMapping("/list")
+    public TableDataInfo list(ApsPartRouteStat apsPartRouteStat)
+    {
+        startPage();
+        List<ApsPartRouteStat> list = apsPartRouteStatService.selectApsPartRouteStatList(apsPartRouteStat);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闆朵欢缁熻琛ㄥ垪琛�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:export")
+    @Log(title = "闆朵欢缁熻琛�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ApsPartRouteStat apsPartRouteStat)
+    {
+        List<ApsPartRouteStat> list = apsPartRouteStatService.selectApsPartRouteStatList(apsPartRouteStat);
+        ExcelUtil<ApsPartRouteStat> util = new ExcelUtil<ApsPartRouteStat>(ApsPartRouteStat.class);
+        util.exportExcel(response, list, "闆朵欢缁熻琛ㄦ暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇闆朵欢缁熻琛ㄨ缁嗕俊鎭�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(apsPartRouteStatService.selectApsPartRouteStatById(id));
+    }
+
+    /**
+     * 鏂板闆朵欢缁熻琛�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:add")
+    @Log(title = "闆朵欢缁熻琛�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ApsPartRouteStat apsPartRouteStat)
+    {
+        return toAjax(apsPartRouteStatService.insertApsPartRouteStat(apsPartRouteStat));
+    }
+
+    /**
+     * 淇敼闆朵欢缁熻琛�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:edit")
+    @Log(title = "闆朵欢缁熻琛�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ApsPartRouteStat apsPartRouteStat)
+    {
+        return toAjax(apsPartRouteStatService.updateApsPartRouteStat(apsPartRouteStat));
+    }
+
+    /**
+     * 鍒犻櫎闆朵欢缁熻琛�
+     */
+    @RequiresPermissions("ApsPartRouteStat:ApsPartRouteStat:remove")
+    @Log(title = "闆朵欢缁熻琛�", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(apsPartRouteStatService.deleteApsPartRouteStatByIds(ids));
+    }
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java
new file mode 100644
index 0000000..4eb129e
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java
@@ -0,0 +1,190 @@
+package com.aps.core.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.aps.common.core.annotation.Excel;
+import com.aps.common.core.web.domain.BaseEntity;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 闆朵欢缁熻琛ㄥ璞� aps_part_route_stat
+ * 
+ * @author zhl
+ * @date 2025-04-11
+ */
+public class ApsPartRouteStat extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private String id;
+
+    /** 宸ュ崟鍙� */
+    @Excel(name = "宸ュ崟鍙�")
+    private String workOrderNo;
+
+    /** 宸ュ簭鍙� */
+    @Excel(name = "宸ュ簭鍙�")
+    private BigDecimal roadProcessNumber;
+
+    /** 褰撳墠宸ュ簭鍙� */
+    @Excel(name = "褰撳墠宸ュ簭鍙�")
+    private BigDecimal currentProcessNumber;
+
+    /** 鐢熶骇鏁伴噺 */
+    @Excel(name = "鐢熶骇鏁伴噺")
+    private Long productionQuantity;
+
+    /** 鏍囧噯宸ユ椂 */
+    @Excel(name = "鏍囧噯宸ユ椂")
+    private Long standardTime;
+
+    /** 宸ュ簭鎬诲伐鏃� */
+    @Excel(name = "宸ュ簭鎬诲伐鏃�")
+    private Long processTotalTime;
+
+    /** 璁″垝寮�宸ユ棩 */
+    @Excel(name = "璁″垝寮�宸ユ棩")
+    private LocalDateTime processPlanStartDay;
+
+    /** 璁捐宸ユ椂 */
+    @Excel(name = "璁捐宸ユ椂")
+    private Long designTimes;
+
+    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
+    private String delFlag;
+
+    /** 鎵规鍙� */
+    @Excel(name = "鎵规鍙�")
+    private String batchNumber;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+
+    public void setWorkOrderNo(String workOrderNo) 
+    {
+        this.workOrderNo = workOrderNo;
+    }
+
+    public String getWorkOrderNo() 
+    {
+        return workOrderNo;
+    }
+
+    public void setRoadProcessNumber(BigDecimal roadProcessNumber)
+    {
+        this.roadProcessNumber = roadProcessNumber;
+    }
+
+    public BigDecimal getRoadProcessNumber()
+    {
+        return roadProcessNumber;
+    }
+
+    public void setCurrentProcessNumber(BigDecimal currentProcessNumber)
+    {
+        this.currentProcessNumber = currentProcessNumber;
+    }
+
+    public BigDecimal getCurrentProcessNumber()
+    {
+        return currentProcessNumber;
+    }
+
+    public void setProductionQuantity(Long productionQuantity) 
+    {
+        this.productionQuantity = productionQuantity;
+    }
+
+    public Long getProductionQuantity() 
+    {
+        return productionQuantity;
+    }
+
+    public void setStandardTime(Long standardTime) 
+    {
+        this.standardTime = standardTime;
+    }
+
+    public Long getStandardTime() 
+    {
+        return standardTime;
+    }
+
+    public void setProcessTotalTime(Long processTotalTime) 
+    {
+        this.processTotalTime = processTotalTime;
+    }
+
+    public Long getProcessTotalTime() 
+    {
+        return processTotalTime;
+    }
+
+    public void setProcessPlanStartDay(LocalDateTime processPlanStartDay)
+    {
+        this.processPlanStartDay = processPlanStartDay;
+    }
+
+    public LocalDateTime getProcessPlanStartDay()
+    {
+        return processPlanStartDay;
+    }
+
+    public void setDesignTimes(Long designTimes) 
+    {
+        this.designTimes = designTimes;
+    }
+
+    public Long getDesignTimes() 
+    {
+        return designTimes;
+    }
+
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    public void setBatchNumber(String batchNumber) 
+    {
+        this.batchNumber = batchNumber;
+    }
+
+    public String getBatchNumber() 
+    {
+        return batchNumber;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("workOrderNo", getWorkOrderNo())
+            .append("roadProcessNumber", getRoadProcessNumber())
+            .append("currentProcessNumber", getCurrentProcessNumber())
+            .append("productionQuantity", getProductionQuantity())
+            .append("standardTime", getStandardTime())
+            .append("processTotalTime", getProcessTotalTime())
+            .append("processPlanStartDay", getProcessPlanStartDay())
+            .append("designTimes", getDesignTimes())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("batchNumber", getBatchNumber())
+            .toString();
+    }
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java
new file mode 100644
index 0000000..1b7f892
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java
@@ -0,0 +1,74 @@
+package com.aps.core.mapper;
+
+import java.util.List;
+import com.aps.core.domain.ApsPartRouteStat;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 闆朵欢缁熻琛∕apper鎺ュ彛
+ * 
+ * @author zhl
+ * @date 2025-04-11
+ */
+@Mapper
+public interface ApsPartRouteStatMapper 
+{
+    /**
+     * 鏌ヨ闆朵欢缁熻琛�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 闆朵欢缁熻琛�
+     */
+    public ApsPartRouteStat selectApsPartRouteStatById(String id);
+
+    /**
+     * 鏌ヨ闆朵欢缁熻琛ㄥ垪琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 闆朵欢缁熻琛ㄩ泦鍚�
+     */
+    public List<ApsPartRouteStat> selectApsPartRouteStatList(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 鏂板闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    public int insertApsPartRouteStat(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 淇敼闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    public int updateApsPartRouteStat(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 鍒犻櫎闆朵欢缁熻琛�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 缁撴灉
+     */
+    public int deleteApsPartRouteStatById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎闆朵欢缁熻琛�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteApsPartRouteStatByIds(String[] ids);
+
+    /**
+     * 鏌ヨ闆朵欢缁熻鐢ㄤ簬璁$畻
+     * @return
+     */
+    List<ApsPartRouteStat>  selectPartRoutStat();
+    /**
+     *  鍦ㄩ噸鏂版彃鍏ヤ箣鍓嶏紝 鍒犻櫎闄ゆbatchNumber涔嬪鐨勬暟鎹紝
+     * */
+    int deleteLastBatch(String batchNumber);
+
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java
new file mode 100644
index 0000000..9bd2305
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java
@@ -0,0 +1,62 @@
+package com.aps.core.service;
+
+import java.util.List;
+import com.aps.core.domain.ApsPartRouteStat;
+
+/**
+ * 闆朵欢缁熻琛⊿ervice鎺ュ彛
+ * 
+ * @author zhl
+ * @date 2025-04-11
+ */
+public interface IApsPartRouteStatService 
+{
+    /**
+     * 鏌ヨ闆朵欢缁熻琛�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 闆朵欢缁熻琛�
+     */
+    public ApsPartRouteStat selectApsPartRouteStatById(String id);
+
+    /**
+     * 鏌ヨ闆朵欢缁熻琛ㄥ垪琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 闆朵欢缁熻琛ㄩ泦鍚�
+     */
+    public List<ApsPartRouteStat> selectApsPartRouteStatList(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 鏂板闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    public int insertApsPartRouteStat(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 淇敼闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    public int updateApsPartRouteStat(ApsPartRouteStat apsPartRouteStat);
+
+    /**
+     * 鎵归噺鍒犻櫎闆朵欢缁熻琛�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑闆朵欢缁熻琛ㄤ富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteApsPartRouteStatByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎闆朵欢缁熻琛ㄤ俊鎭�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 缁撴灉
+     */
+    public int deleteApsPartRouteStatById(String id);
+
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
new file mode 100644
index 0000000..c9c4baa
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
@@ -0,0 +1,145 @@
+package com.aps.core.service.impl;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+import com.aps.common.core.utils.uuid.IdUtils;
+import com.aps.common.core.utils.uuid.UUID;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.commons.config.DefaultsBindHandlerAdvisor;
+import org.springframework.stereotype.Service;
+import com.aps.core.mapper.ApsPartRouteStatMapper;
+import com.aps.core.domain.ApsPartRouteStat;
+import com.aps.core.service.IApsPartRouteStatService;
+
+import static java.util.stream.Collectors.groupingBy;
+
+/**
+ * 闆朵欢缁熻琛⊿ervice涓氬姟灞傚鐞�
+ * 
+ * @author zhl
+ * @date 2025-04-11
+ */
+@Service
+public class ApsPartRouteStatServiceImpl implements IApsPartRouteStatService 
+{
+    @Autowired
+    private ApsPartRouteStatMapper apsPartRouteStatMapper;
+    private DefaultsBindHandlerAdvisor.MappingsProvider mappingsProvider;
+
+    /**
+     * 鏌ヨ闆朵欢缁熻琛�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 闆朵欢缁熻琛�
+     */
+    @Override
+    public ApsPartRouteStat selectApsPartRouteStatById(String id)
+    {
+        return apsPartRouteStatMapper.selectApsPartRouteStatById(id);
+    }
+
+    /**
+     * 鏌ヨ闆朵欢缁熻琛ㄥ垪琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 闆朵欢缁熻琛�
+     */
+    @Override
+    public List<ApsPartRouteStat> selectApsPartRouteStatList(ApsPartRouteStat apsPartRouteStat)
+    {
+        return apsPartRouteStatMapper.selectApsPartRouteStatList(apsPartRouteStat);
+    }
+
+    /**
+     * 鏂板闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertApsPartRouteStat(ApsPartRouteStat apsPartRouteStat)
+    {
+        return apsPartRouteStatMapper.insertApsPartRouteStat(apsPartRouteStat);
+    }
+
+    /**
+     * 淇敼闆朵欢缁熻琛�
+     * 
+     * @param apsPartRouteStat 闆朵欢缁熻琛�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateApsPartRouteStat(ApsPartRouteStat apsPartRouteStat)
+    {
+        return apsPartRouteStatMapper.updateApsPartRouteStat(apsPartRouteStat);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闆朵欢缁熻琛�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑闆朵欢缁熻琛ㄤ富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteApsPartRouteStatByIds(String[] ids)
+    {
+        return apsPartRouteStatMapper.deleteApsPartRouteStatByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎闆朵欢缁熻琛ㄤ俊鎭�
+     * 
+     * @param id 闆朵欢缁熻琛ㄤ富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteApsPartRouteStatById(String id)
+    {
+        return apsPartRouteStatMapper.deleteApsPartRouteStatById(id);
+    }
+
+
+
+
+    public void updatePartRoutPlanDate() {
+        List<ApsPartRouteStat> tempList = apsPartRouteStatMapper.selectPartRoutStat();
+        /*瀵箃empList 鎸夌収 workOrderNo 杩涜鍒嗙粍*/
+        Map<String, List<ApsPartRouteStat>> groupByWorkOrderNo = tempList.stream().collect(groupingBy(ApsPartRouteStat::getWorkOrderNo));
+        /*鏈璁$畻鎵规鍙�*/
+        String batchNum = IdUtils.fastSimpleUUID();
+        apsPartRouteStatMapper.deleteLastBatch(batchNum);
+        for (Map.Entry<String, List<ApsPartRouteStat>> entry : groupByWorkOrderNo.entrySet()) {
+            /*鍙栧嚭姣忎釜闆朵欢宸ュ崟鐨勫伐鑹鸿矾绾夸俊鎭�*/
+            List<ApsPartRouteStat> apsPartRouteStatList = entry.getValue();
+            /*鎸夌収宸ュ簭鍙疯繘琛屾帓搴�*/
+            apsPartRouteStatList.sort((a, b)->a.getRoadProcessNumber().compareTo(b.getRoadProcessNumber()));
+            /*涓存椂淇濆瓨 涓婁竴閬撳伐搴忕殑宸ュ簭鎬诲伐鏃�*/
+            ApsPartRouteStat last=null;
+            for (int i = 0; i <apsPartRouteStatList.size(); i++) {
+                ApsPartRouteStat stat = apsPartRouteStatList.get(0);
+                /*鍒ゆ柇褰撳墠宸ュ簭 褰撳墠宸ュ簭鍙湁涓�鏉�*/
+                if (stat.getCurrentProcessNumber().equals(stat.getRoadProcessNumber())) {
+                    /* 瀵� stat.getProcessPlanStartDay() 鍜屽綋鍓嶆棩鏈� 杩涜瀵规瘮锛屽彧瀵规瘮鍒版棩锛屼笉鐢ㄧ鍗佸垎绉�*/
+                    if (stat.getProcessPlanStartDay().toLocalDate().isBefore(LocalDateTime.now().toLocalDate())) {
+                        stat.setProcessPlanStartDay(LocalDateTime.now());
+                    }
+                }
+                /*鏈紑宸ュ伐搴忕殑璁″垝寮�宸ユ棩=涓婁竴閬撳伐搴忕殑璁″垝寮�宸ユ棩+涓婁竴閬撳伐搴忕殑宸ュ簭鎬诲伐鏃躲��*/
+                if (stat.getCurrentProcessNumber().compareTo(stat.getRoadProcessNumber()) > 0) {
+                    if (last != null) {
+                        stat.setProcessPlanStartDay(last.getProcessPlanStartDay().plusHours(last.getProcessTotalTime()));
+                    }
+                }
+                /*淇濆瓨涓婁竴姝ヨ绠楃殑 寮�宸ユ棩*/
+                last = stat;
+                stat.setId(IdUtils.fastUUID().toString());
+                stat.setBatchNumber(batchNum);
+                apsPartRouteStatMapper.insertApsPartRouteStat(stat);
+            }
+        }
+        apsPartRouteStatMapper.deleteLastBatch(batchNum);
+
+    }
+}
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml
new file mode 100644
index 0000000..d029bb9
--- /dev/null
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.core.mapper.ApsPartRouteStatMapper">
+    
+    <resultMap type="ApsPartRouteStat" id="ApsPartRouteStatResult">
+        <result property="id"    column="id"    />
+        <result property="workOrderNo"    column="work_order_no"    />
+        <result property="roadProcessNumber"    column="road_process_number"    />
+        <result property="currentProcessNumber"    column="current_process_number"    />
+        <result property="productionQuantity"    column="production_quantity"    />
+        <result property="standardTime"    column="standard_time"    />
+        <result property="processTotalTime"    column="process_total_time"    />
+        <result property="processPlanStartDay"    column="process_plan_start_day"    />
+        <result property="designTimes"    column="design_times"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="batchNumber"    column="batch_number"    />
+    </resultMap>
+
+    <sql id="selectApsPartRouteStatVo">
+        select id, work_order_no, road_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_start_day, design_times, del_flag, create_by, batch_number from aps_part_route_stat
+    </sql>
+
+    <select id="selectApsPartRouteStatList" parameterType="ApsPartRouteStat" resultMap="ApsPartRouteStatResult">
+        <include refid="selectApsPartRouteStatVo"/>
+        <where>  
+            <if test="workOrderNo != null  and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
+            <if test="roadProcessNumber != null  and roadProcessNumber != ''"> and road_process_number = #{roadProcessNumber}</if>
+            <if test="currentProcessNumber != null  and currentProcessNumber != ''"> and current_process_number = #{currentProcessNumber}</if>
+            <if test="productionQuantity != null "> and production_quantity = #{productionQuantity}</if>
+            <if test="standardTime != null "> and standard_time = #{standardTime}</if>
+            <if test="processTotalTime != null "> and process_total_time = #{processTotalTime}</if>
+            <if test="processPlanStartDay != null  and processPlanStartDay != ''"> and process_plan_start_day = #{processPlanStartDay}</if>
+            <if test="designTimes != null "> and design_times = #{designTimes}</if>
+            <if test="batchNumber != null  and batchNumber != ''"> and batch_number = #{batchNumber}</if>
+        </where>
+    </select>
+    
+    <select id="selectApsPartRouteStatById" parameterType="String" resultMap="ApsPartRouteStatResult">
+        <include refid="selectApsPartRouteStatVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertApsPartRouteStat" parameterType="ApsPartRouteStat">
+        insert into aps_part_route_stat
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="workOrderNo != null">work_order_no,</if>
+            <if test="roadProcessNumber != null and roadProcessNumber != ''">road_process_number,</if>
+            <if test="currentProcessNumber != null">current_process_number,</if>
+            <if test="productionQuantity != null">production_quantity,</if>
+            <if test="standardTime != null">standard_time,</if>
+            <if test="processTotalTime != null">process_total_time,</if>
+            <if test="processPlanStartDay != null and processPlanStartDay != ''">process_plan_start_day,</if>
+            <if test="designTimes != null">design_times,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="batchNumber != null">batch_number,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="workOrderNo != null">#{workOrderNo},</if>
+            <if test="roadProcessNumber != null and roadProcessNumber != ''">#{roadProcessNumber},</if>
+            <if test="currentProcessNumber != null">#{currentProcessNumber},</if>
+            <if test="productionQuantity != null">#{productionQuantity},</if>
+            <if test="standardTime != null">#{standardTime},</if>
+            <if test="processTotalTime != null">#{processTotalTime},</if>
+            <if test="processPlanStartDay != null and processPlanStartDay != ''">#{processPlanStartDay},</if>
+            <if test="designTimes != null">#{designTimes},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="batchNumber != null">#{batchNumber},</if>
+         </trim>
+    </insert>
+
+    <update id="updateApsPartRouteStat" parameterType="ApsPartRouteStat">
+        update aps_part_route_stat
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="workOrderNo != null">work_order_no = #{workOrderNo},</if>
+            <if test="roadProcessNumber != null and roadProcessNumber != ''">road_process_number = #{roadProcessNumber},</if>
+            <if test="currentProcessNumber != null">current_process_number = #{currentProcessNumber},</if>
+            <if test="productionQuantity != null">production_quantity = #{productionQuantity},</if>
+            <if test="standardTime != null">standard_time = #{standardTime},</if>
+            <if test="processTotalTime != null">process_total_time = #{processTotalTime},</if>
+            <if test="processPlanStartDay != null and processPlanStartDay != ''">process_plan_start_day = #{processPlanStartDay},</if>
+            <if test="designTimes != null">design_times = #{designTimes},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="batchNumber != null">batch_number = #{batchNumber},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteApsPartRouteStatById" parameterType="String">
+        update aps_part_route_stat set del_flag = '1' where id = #{id}
+    </update>
+
+    <update id="deleteApsPartRouteStatByIds" parameterType="String">
+        update aps_part_route_stat set del_flag = '1'
+        where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    <update id="deleteLastBatch" parameterType="String">
+        update aps_part_route_stat set del_flag = '1' where batch_number != #{batchNumber}
+    </update>
+    <select id="selectPartRoutStat"  resultMap="ApsPartRouteStatResult" >
+        select rt.work_order_no,
+            rt.process_name,
+            cast( rt.process_number as numeric(18,2)) as road_process_number,
+            cast( pl.process_number as numeric(18,2)) as current_process_number,
+            pl.production_quantity,
+            rt.standard_time,
+            (rt.standard_time*pl.production_quantity) as process_total_time,
+            rt.process_plan_start_day ,
+            (rs.devices_quantity*rs.theory_hours) as design_time
+        from aps_part_plan  as pl
+            left join aps_process_route as rt on pl.document_number=rt.work_order_no
+            left join aps_resource_group as rs on rs.resource_group_name=rt.process_name
+        where pl.del_flag='0' and rt.del_flag='0'
+            /*闆朵欢璁″垝鐘舵�佷负锛氶潪瀹屽伐 */
+            and ( pl.order_status!='' and ( pl.order_status!='3' or pl.order_status!='瀹屽伐') )
+            /*宸ヨ壓璺嚎鐨勫伐搴忓彿>=闆朵欢璁″垝鐨勫綋鍓嶅伐搴�*/
+            and cast( rt.process_number as decimal(18,2)) >=  cast( pl.process_number as decimal(18,2))
+            /*宸ュ簭璁″垝寮�宸ユ棩 <= 璧勬簮缁勭殑鎴鏃ユ湡*/
+            and rt.process_plan_start_day<=rs.request_date
+            /*璧勬簮缁勯渶姹傛埅姝㈡棩鏈�<=褰撳墠鏃ユ湡+15澶�*/
+            and rs.request_date<=(current_date + INTERVAL '15 day')
+            order by rt.work_order_no,process_plan_start_day
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3