From e732ec664a35080497fd17d6550fd5d718466332 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期三, 14 十二月 2022 10:10:46 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/mapper/StaDescMapper.java              |    2 
 src/main/java/com/zy/asrs/entity/OrderDetl.java                  |    9 ++
 src/main/java/com/zy/common/service/erp/ErpService.java          |    9 +++
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java       |   26 +++++++-
 src/main/resources/mapper/OrderDetlMapper.xml                    |    7 ++
 src/main/java/com/zy/asrs/service/OrderDetlService.java          |    2 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java     |    3 +
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java |    5 +
 src/main/webapp/static/js/order/order.js                         |    1 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java     |   14 ++++
 src/main/resources/mapper/StaDescMapper.xml                      |    9 +++
 src/main/java/com/zy/asrs/controller/OutController.java          |   20 ++++--
 src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java   |   23 +++++++
 14 files changed, 118 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index cdd590c..be942f0 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -68,9 +68,12 @@
             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
             for (LocDetl locDetl : locDetls) {
                 if (issued > 0) {
+//                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
+//                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
                     LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
-                    int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
+                            locDetl.getAnfme());
+//                    int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
+                    int ioType = 101;
                     List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
                     locDto.setStaNos(staNos);
                     locDtos.add(locDto);
@@ -98,6 +101,11 @@
             return R.parse(BaseRes.PARAM);
         }
         boolean lack = true;
+        for (LocDto locDto : locDtos) {
+            if (Cools.isEmpty(locDto.getStaNo())) {
+                return R.error(locDto.getLocNo()+"搴撲綅璇烽�夋嫨鍑哄簱绔�");
+            }
+        }
         for (LocDto locDto : locDtos) {
             if (!locDto.isLack()) {
                 lack = false;
@@ -143,10 +151,10 @@
             if (order.getSettle() > 2) {
                 return R.error(orderDto.getOrderNo() + "璁㈠崟宸插け鏁堬紝璇峰強鏃跺埛鏂伴〉闈�");
             }
-            OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), orderDto.getMatnr(), orderDto.getBatch());
-            if (orderDetl.getAnfme() - orderDetl.getQty() < orderDto.getAnfme()) {
-                return R.ok(orderDto.getOrderNo() + "璁㈠崟宸蹭綔涓氾紝璇峰強鏃跺埛鏂伴〉闈�");
-            }
+//            OrderDetl orderDetl = orderDetlService.selectItemNoneOfBatch(orderDto.getOrderNo(), orderDto.getMatnr());
+//            if (orderDetl.getAnfme() - orderDetl.getQty() < orderDto.getAnfme()) {
+//                return R.ok(orderDto.getOrderNo() + "璁㈠崟宸蹭綔涓氾紝璇峰強鏃跺埛鏂伴〉闈�");
+//            }
         }
 
         List<TaskDto> taskDtos = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index aafcf23..2d20f94 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -433,10 +433,15 @@
     }
 
     public Double getEnableQty() {
+        Double enableQty = null;
         if (null != this.anfme && this.qty != null) {
-            return this.anfme - this.qty;
+            enableQty = this.anfme - this.qty;
+            if (enableQty < 0) {
+                enableQty = 0.0D;
+            }
+//            return this.anfme - this.qty;
         }
-        return null;
+        return enableQty;
     }
 
     public void sync(Object source) {
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index ea2f5e5..f2b42ce 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -17,6 +17,8 @@
 
     OrderDetl selectItemByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch);
 
+    OrderDetl selectItemNoneOfBatch(String orderNo, String matnr);
+
     List<OrderDetl> selectWorkingDetls(Long orderId);
 
     List<OrderDetl> getPakoutPage(Map<String, Object> map);
diff --git a/src/main/java/com/zy/asrs/mapper/StaDescMapper.java b/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
index c26c603..4eb6237 100644
--- a/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
@@ -14,6 +14,8 @@
 
     List<Integer> queryOutStaNosByLocNo(@Param("locNo") String locNo, @Param("typeNo") Integer typeNo);
 
+    List<Integer> queryOutStaNosByCrnNo(@Param("crnNo") Integer crnNo, @Param("typeNo") Integer typeNo);
+
     StaDesc queryCrnStn(Integer crnNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index cf82d5d..b7caad5 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -16,6 +16,8 @@
 
     OrderDetl selectItem(String orderNo, String matnr, String batch);
 
+    OrderDetl selectItemNoneOfBatch(String orderNo, String matnr);
+
     OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch);
 
     boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty);
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index db0b708..0419b37 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -39,6 +39,11 @@
     }
 
     @Override
+    public OrderDetl selectItemNoneOfBatch(String orderNo, String matnr) {
+        return this.baseMapper.selectItemNoneOfBatch(orderNo, matnr);
+    }
+
+    @Override
     public OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch) {
         for (OrderDetl orderDetl : orderDetls) {
             if (orderDetl.getOrderId().equals(orderId) && orderDetl.getMatnr().equals(matnr)) {
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 5b9e608..bf68fed 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -15,6 +15,7 @@
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.OrderDto;
 import com.zy.common.model.OrderMergeVo;
+import com.zy.common.service.erp.ErpService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -40,6 +41,8 @@
     private WrkDetlService wrkDetlService;
     @Autowired
     private MatService matService;
+    @Autowired
+    private ErpService erpService;
 
     @Override
     public Order selectByNo(String orderNo) {
diff --git a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
index 1b995a3..999ba33 100644
--- a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -7,7 +7,11 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.StaDesc;
 import com.zy.asrs.mapper.StaDescMapper;
+import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.StaDescService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.service.CommonService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -15,9 +19,26 @@
 @Service("staDescService")
 public class StaDescServiceImpl extends ServiceImpl<StaDescMapper, StaDesc> implements StaDescService {
 
+    @Autowired
+    private LocMastService locMastService;
+
     @Override
     public List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo) {
-        return this.baseMapper.queryOutStaNosByLocNo(locNo, typeNo);
+        int crnNo = 0;
+        int row = Utils.getRow(locNo);
+        if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
+            crnNo = 1;
+        }
+        if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
+            crnNo = 3;
+        }
+        if (row == 1) {
+            crnNo = 1;
+        }
+        if (row == 31 || row == 32) {
+            crnNo = 3;
+        }
+        return this.baseMapper.queryOutStaNosByCrnNo(crnNo, typeNo);
     }
 
     @Override
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 6571c51..f245ab7 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.fastjson.JSON;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
@@ -11,11 +12,13 @@
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.common.service.erp.ErpService;
+import com.zy.common.service.erp.entity.VoucherDetail;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.List;
 
@@ -70,11 +73,20 @@
                 if (!erpService.updateStateForVoucher(order.getOrderNo(), state)) {
                     throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
                 } else {
-                    erpService.updateTimeForVoucherDetail(order.getOrderNo());
+                    for (OrderDetl orderDetl : orderDetls) {
+                        VoucherDetail voucherDetail = new VoucherDetail();
+                        voucherDetail.setVoucherID(order.getOrderNo());
+                        voucherDetail.setPickID("fepvnn0496");
+                        voucherDetail.setBarcode(orderDetl.getBatch());
+                        if (!erpService.insertVoucherDetail(voucherDetail)) {
+                            throw new CoolException(order.getOrderNo() + "璁㈠崟娣诲姞VoucherDetail"+ JSON.toJSONString(voucherDetail)+"澶辫触");
+                        }
+                    }
                 }
 
             } catch (Exception e) {
                 log.error("fail", e);
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg(e.getMessage());
             }
         }
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 62cca94..14cb132 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -119,8 +119,17 @@
                         }
                     }
                     // 淇敼 erp Goods 琛�
-                    List<WrkDetl> wrkDetls0 = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-                    for (WrkDetl wrkDetl : wrkDetls0) {
+                    for (WrkDetl wrkDetl : wrkDetls) {
+                        Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch());
+                        if (!Cools.isEmpty(goods)) {
+                            if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) {
+                                log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode());
+                            }
+                        } else {
+                            log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr());
+                        }
+                    }
+                    for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
                         Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch());
                         if (!Cools.isEmpty(goods)) {
                             if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) {
@@ -140,8 +149,17 @@
                     }
                 }
                 // 淇敼 erp Goods 琛�
-                List<WrkDetl> wrkDetls0 = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-                for (WrkDetl wrkDetl : wrkDetls0) {
+                for (WrkDetl wrkDetl : wrkDetls) {
+                    Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch());
+                    if (!Cools.isEmpty(goods)) {
+                        if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) {
+                            log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode());
+                        }
+                    } else {
+                        log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr());
+                    }
+                }
+                for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
                     Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch());
                     if (!Cools.isEmpty(goods)) {
                         if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) {
diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java
index bb66ce0..c4c8d79 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
@@ -119,4 +119,13 @@
         return erpSqlServer.update(sql) > 0;
     }
 
+    /**
+     * 鏂板 VoucherDetail 琛�
+     */
+    public boolean insertVoucherDetail(VoucherDetail voucherDetail){
+        String sql = "update VoucherDetail set LastUpdatedDate = ''{1}'' where VoucherID = ''{0}''";
+        sql = MessageFormat.format(sql, voucherID, DateUtils.convert(new Date()));
+        return erpSqlServer.update(sql) > 0;
+    }
+
 }
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index ee1bf31..4886921 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -74,6 +74,13 @@
         </if>
     </select>
 
+    <select id="selectItemNoneOfBatch" resultMap="BaseResultMap">
+        select * from man_order_detl
+        where 1=1
+        and order_no = #{orderNo}
+        and matnr = #{matnr}
+    </select>
+
     <select id="selectWorkingDetls" resultMap="BaseResultMap">
         select * from man_order_detl
         where 1=1
diff --git a/src/main/resources/mapper/StaDescMapper.xml b/src/main/resources/mapper/StaDescMapper.xml
index 97d9e7c..92209c8 100644
--- a/src/main/resources/mapper/StaDescMapper.xml
+++ b/src/main/resources/mapper/StaDescMapper.xml
@@ -32,6 +32,15 @@
         </if>
     </select>
 
+    <select id="queryOutStaNosByCrnNo" resultType="java.lang.Integer">
+        select
+        distinct asd.stn_no
+        from asr_sta_desc asd
+        where 1=1
+        and asd.crn_no = #{crnNo}
+        and asd.type_no = #{typeNo}
+    </select>
+
     <select id="queryCrnStn" resultMap="BaseResultMap">
         select top 1 * from asr_sta_desc
         where 1=1
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 9b5476b..ebd66fd 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -46,6 +46,7 @@
             {type: 'numbers'},
             {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
             {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
+            {field: 'postFee', align: 'center', title: '鎬绘暟閲�',  minWidth: 130, width: 130},
             {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
             {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
             {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},

--
Gitblit v1.9.1