From aca94963ca944c256c4ef69d0316a2e8d6ccbc62 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 11 四月 2026 16:35:32 +0800
Subject: [PATCH] 单据上报U8批次

---
 src/main/resources/mapper/OrderDetlMapper.xml                 |    6 
 src/main/resources/mapper/OrderReportMapper.xml               |   36 +++++++
 src/main/java/com/zy/asrs/entity/OrderDetl.java               |    2 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java   |    4 
 src/main/java/com/zy/asrs/entity/OrderReport.java             |   43 ++++++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java   |    2 
 src/main/resources/mapper/LocDetlMapper.xml                   |    3 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   37 +++++--
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java  |  115 +++++++++++++++-------
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java    |   15 +++
 src/main/java/com/zy/asrs/mapper/OrderReportMapper.java       |   23 ++++
 11 files changed, 228 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 17b1f8e..7b7131b 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -446,7 +446,7 @@
 
     public Double getEnableQty() {
         if (null != this.anfme && this.workQty != null) {
-            return this.anfme - this.workQty;
+            return this.anfme - this.workQty - this.qty;
         }
 //        if (null != this.anfme && this.qty != null) {
 //            return this.anfme - this.qty;
diff --git a/src/main/java/com/zy/asrs/entity/OrderReport.java b/src/main/java/com/zy/asrs/entity/OrderReport.java
new file mode 100644
index 0000000..0e47fd4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/OrderReport.java
@@ -0,0 +1,43 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @author pang.jiabao
+ * @description
+ * @createDate 2026/4/10 14:30
+ */
+@Data
+@TableName("man_order_report")
+public class OrderReport {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("order_no")
+    private String orderNo;
+
+    @TableField("matnr")
+    private String matnr;
+
+    @TableField("maktx")
+    private String maktx;
+
+    @TableField("batch")
+    private String batch;
+
+    @TableField("anfme")
+    private Double anfme;
+
+    public void sync(Object source) {
+        BeanUtils.copyProperties(source,this);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderReportMapper.java b/src/main/java/com/zy/asrs/mapper/OrderReportMapper.java
new file mode 100644
index 0000000..b57b0a9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/OrderReportMapper.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.OrderReport;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description
+ * @createDate 2026/4/10 14:28
+ */
+@Mapper
+public interface OrderReportMapper extends BaseMapper<OrderReport> {
+
+    int insertBatch(@Param("list") List<OrderReport> list);
+
+    List<OrderReport> selectSummary(@Param("orderNo") String orderNo, @Param("matnr") String matnr);
+
+    int moveToLog(@Param("orderNos") List<String> orderNos);
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 2a055e4..0cb0be0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -13,6 +13,7 @@
 import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.mapper.OrderReportMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.SaasUtils;
@@ -85,6 +86,9 @@
     @Resource
     private OrderDetlMapper orderDetlMapper;
 
+    @Resource
+    private OrderReportMapper orderReportMapper;
+
     @Override
     @Transactional
     public R WarehouseOut(CombParam combParam, Long userId) {
@@ -111,21 +115,27 @@
                 if (order.getSettle() == 1) {
                     orderService.updateSettle(order.getId(), 2L, userId);
                 }
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), "");
                 if (Cools.isEmpty(orderDetl)) {
                     continue;
                 }
                 if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) {
                     combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
                 }
-                // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
-                if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) {
+                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+                if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), "", combMat.getAnfme()) <= 0) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
                 }
-                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
-                if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
-                    throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
-                }
+//                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+//                if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), "", combMat.getAnfme())) {
+//                    throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+//                }
+                // 鎻掑叆涓婃姤琛�
+                combMat.setOrderNo(combParam.getOrderNo());
+                OrderReport orderReport = new OrderReport();
+                orderReport.sync(combMat);
+                orderReportMapper.insert(orderReport);
+
                 // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
                 orderService.checkComplete(combParam.getOrderNo());
             }
@@ -226,14 +236,19 @@
                 if (Cools.isEmpty(order)){
                     throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟澶辫触");
                 }
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), "");
                 if (Cools.isEmpty(orderDetl)){
                     throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟鏄庣粏澶辫触");
                 }
                 // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
-                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
+                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), "", waitPakin.getAnfme())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
+                // 鎻掑叆涓婃姤琛�
+                OrderReport orderReport = new OrderReport();
+                orderReport.sync(waitPakin);
+                orderReportMapper.insert(orderReport);
+
                 // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
                 orderService.checkComplete(waitPakin.getOrderNo());
 
@@ -339,12 +354,12 @@
                     throw new CoolException("鍗曟嵁缂栧彿宸插畬鎴愶細" + elem.getOrderNo());
                 }
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), "");
                 if (elem.getAnfme() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
                 // 淇敼璁㈠崟鏄庣粏鏁伴噺
-                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), "", elem.getAnfme())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 6f7b59e..b897c8c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -891,7 +891,7 @@
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
             for (WrkDetl wrkDetl : wrkDetls) {
                 if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), "", wrkDetl.getAnfme())) {
                         throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                     }
 
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index c6b0474..8f8f8b8 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,15 +2,18 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.OrderReport;
 import com.zy.asrs.entity.u8.ReportU8Vo;
 import com.zy.asrs.entity.u8.U8ResultVo;
 import com.zy.asrs.mapper.OrderMapper;
+import com.zy.asrs.mapper.OrderReportMapper;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderDetlService;
@@ -51,7 +54,12 @@
     @Autowired
     private DocTypeService docTypeService;
 
+    @Resource
+    private OrderReportMapper orderReportMapper;
+
     private static final String baseUrl = "192.168.4.189:10006/api/U8Server";
+//    private static final String baseUrl = "127.0.0.1:8080/jsjwms/open/asrs";
+
     private static final Map<String, String> pathMap = new HashMap<String, String>() {{
         put("閲囪喘鍒拌揣鍗�", "/purchasein_import");
         put("閿�鍞彂璐у崟", "/saleout_import");
@@ -59,6 +67,12 @@
         put("棰嗘枡鐢宠鍗�", "/materialout_import");
         put("鍏朵粬鍏ュ簱鍗�", "/otherin_import");
         put("鍏朵粬鍑哄簱鍗�", "/otherout_import");
+//        put("閲囪喘鍒拌揣鍗�", "/purchasein_import");
+//        put("閿�鍞彂璐у崟", "/purchasein_import");
+//        put("鐢熶骇璁㈠崟", "/purchasein_import");
+//        put("棰嗘枡鐢宠鍗�", "/purchasein_import");
+//        put("鍏朵粬鍏ュ簱鍗�", "/purchasein_import");
+//        put("鍏朵粬鍑哄簱鍗�", "/purchasein_import");
     }};
     @Resource
     private OrderMapper orderMapper;
@@ -176,6 +190,7 @@
         return SUCCESS;
     }
 
+    @Transactional
     public void startNew(Map.Entry<String, List<Order>> orderMap) {
         String docName = orderMap.getKey();
         List<Order> value = orderMap.getValue();
@@ -205,6 +220,10 @@
                 List<String> successReceiptNos = list.stream().filter(u8ResultVo -> "T".equals(u8ResultVo.getResult())).map(U8ResultVo::getReceiptNo).collect(Collectors.toList());
                 if (!successReceiptNos.isEmpty()) {
                     orderMapper.batchUpdateSettleByOrderNos(successReceiptNos);
+                    // 涓婃姤琛ㄨ浆鍘嗗彶
+                    orderReportMapper.moveToLog(successReceiptNos);
+                    // 鍒犻櫎涓婃姤琛ㄦ暟鎹�
+                    orderReportMapper.delete(new EntityWrapper<OrderReport>().in("order_no",successReceiptNos));
                     success = true;
                 }
                 log.info("鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", successReceiptNos);
@@ -252,14 +271,17 @@
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                     String docType$ = order.getDocType$();
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setAutoidPo(orderDetl.getSku());
-                        item.setPoautoidcol(docType$.equals("閲囪喘璁㈠崟") ? "ID" : docType$.equals("閲囪喘鍒拌揣鍗�") || docType$.equals("濮斿鍒拌揣鍗�") ? "Autoid" :
-                                docType$.equals("濮斿璁㈠崟") ? "MODetailsID" : "");
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setAutoidPo(orderDetl.getSku());
+                            item.setPoautoidcol(docType$.equals("閲囪喘璁㈠崟") ? "ID" : docType$.equals("閲囪喘鍒拌揣鍗�") || docType$.equals("濮斿鍒拌揣鍗�") ? "Autoid" :
+                                    docType$.equals("濮斿璁㈠崟") ? "MODetailsID" : "");
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
@@ -280,13 +302,16 @@
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
 //                    String docType$ = order.getDocType$();
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setAutoidSo(orderDetl.getSku());
-                        item.setSoautoidcol("IDLSID");
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setAutoidSo(orderDetl.getSku());
+                            item.setSoautoidcol("IDLSID");
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
@@ -306,13 +331,16 @@
                     List<ReportU8Vo.Item> itemList = new ArrayList<>();
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setAutoidMo(orderDetl.getSku());
-                        item.setMoautoidcol("MODID");
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setAutoidMo(orderDetl.getSku());
+                            item.setMoautoidcol("MODID");
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
@@ -333,13 +361,16 @@
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
 //                    String docType$ = order.getDocType$();
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setAutoidAll(orderDetl.getSku());
-                        item.setAllcautoidcol("AutoID");
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setAutoidAll(orderDetl.getSku());
+                            item.setAllcautoidcol("AutoID");
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
@@ -359,11 +390,14 @@
                     List<ReportU8Vo.Item> itemList = new ArrayList<>();
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
@@ -383,11 +417,14 @@
                     List<ReportU8Vo.Item> itemList = new ArrayList<>();
                     List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                     for (OrderDetl orderDetl : orderDetlList) {
-                        ReportU8Vo.Item item = new ReportU8Vo.Item();
-                        item.setCinvcode(orderDetl.getMatnr());
-                        item.setIquantity(orderDetl.getQty());
-                        item.setCbatch(orderDetl.getBatch());
-                        itemList.add(item);
+                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
+                        for(OrderReport orderReport: orderReports) {
+                            ReportU8Vo.Item item = new ReportU8Vo.Item();
+                            item.setCinvcode(orderDetl.getMatnr());
+                            item.setIquantity(orderReport.getAnfme());
+                            item.setCbatch(orderReport.getBatch());
+                            itemList.add(item);
+                        }
                     }
                     reportU8Vo.setDetailList(itemList);
                     list.add(reportU8Vo);
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index d71d3e4..b760e50 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.zy.asrs.entity.OrderReport;
 import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.OrderReportMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
@@ -14,6 +16,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
@@ -39,21 +43,32 @@
     @Autowired
     private OrderService orderService;
 
+    @Resource
+    private OrderReportMapper orderReportMapper;
+
     @Transactional
     public ReturnT<String> start(WrkMast wrkMast) {
         try {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+            List<OrderReport> orderReports = new ArrayList<>();
             // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
             if (!Cools.isEmpty(wrkDetls)) {
                 Iterator<WrkDetl> iterator = wrkDetls.iterator();
                 while (iterator.hasNext()) {
                     WrkDetl wrkDetl = iterator.next();
                     if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                        OrderReport orderReport = new OrderReport();
+                        orderReport.sync(wrkDetl);
+                        orderReports.add(orderReport);
                         orderService.checkComplete(wrkDetl.getOrderNo());
                         iterator.remove();
                     }
                 }
             }
+            // 鎻掑叆涓婃姤琛�
+            if (!orderReports.isEmpty()) {
+                orderReportMapper.insertBatch(orderReports);
+            }
 
             // 鍏ュ簱 --------------------------------------------------------------------------------
             if (wrkMast.getWrkSts() == 5) {
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index b8b09db..b6e7c5b 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -135,7 +135,7 @@
                         try {
                             if(!Cools.isEmpty(orderDetl)){
                                 if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+                                        "",wrkDetl.getAnfme())){
 //                                    exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -391,7 +391,7 @@
                         try {
                             if(!Cools.isEmpty(orderDetl)){
                                 if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+                                        "",wrkDetl.getAnfme())){
 //                                    exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 2dafee4..97ebbc8 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -166,10 +166,11 @@
         select
         ROW_NUMBER() over (order by sum(a.anfme) desc) as row
         , a.matnr
+        , a.batch
         , sum(a.anfme) as anfme
         from asr_loc_detl a
         where 1=1
-        group by a.matnr
+        group by a.matnr,a.batch
     </select>
 
     <select id="selectPakoutByRule" resultMap="BaseResultMap">
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 8c855f7..b05eddc 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -127,7 +127,7 @@
 
     <update id="increase">
         update man_order_detl
-        set qty = qty + #{qty}
+        set qty = qty + #{qty},work_qty = work_qty - #{qty}
         where 1=1
         and order_id = #{orderId}
         and matnr = #{matnr}
@@ -170,7 +170,7 @@
 
     <update id="increaseQtyByOrderNo">
         update man_order_detl
-        set qty = qty + #{qty}
+        set qty = qty + #{qty},work_qty = work_qty - #{qty}
         where 1=1
         and order_no = #{orderNo}
         and matnr = #{matnr}
@@ -201,7 +201,7 @@
     </update>
     <update id="increaseWorkQtyByOrderNo">
         update man_order_detl
-        set work_qty = work_qty + #{qty}
+        set qty = qty + #{qty}
         where 1=1
         and order_no = #{orderNo}
         and matnr = #{matnr}
diff --git a/src/main/resources/mapper/OrderReportMapper.xml b/src/main/resources/mapper/OrderReportMapper.xml
new file mode 100644
index 0000000..2ff3834
--- /dev/null
+++ b/src/main/resources/mapper/OrderReportMapper.xml
@@ -0,0 +1,36 @@
+<?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.zy.asrs.mapper.OrderReportMapper">
+
+    <insert id="insertBatch">
+        INSERT INTO man_order_report (order_no, matnr, maktx, batch, anfme)
+        <foreach collection="list" item="item" separator=" UNION ALL ">
+            SELECT
+            #{item.orderNo},
+            #{item.matnr},
+            #{item.maktx},
+            #{item.batch},
+            #{item.anfme}
+        </foreach>
+    </insert>
+    <insert id="moveToLog">
+        INSERT INTO man_order_report_log (id, order_no, matnr, maktx, batch, anfme)
+        SELECT id, order_no, matnr, maktx, batch, anfme
+        FROM man_order_report
+        WHERE order_no IN
+        <foreach collection="orderNos" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </insert>
+    <select id="selectSummary" resultType="com.zy.asrs.entity.OrderReport">
+        SELECT
+            order_no   AS orderNo,
+            matnr,
+            batch,
+            SUM(anfme) AS anfme
+        FROM man_order_report
+        WHERE order_no = #{orderNo}
+          AND matnr = #{matnr}
+        GROUP BY order_no, matnr, batch
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1