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

---
 src/main/resources/mapper/OrderDetlMapper.xml                    |   15 +++++
 src/main/java/com/zy/asrs/utils/VersionUtils.java                |   11 +++
 src/main/java/com/zy/asrs/service/OrderDetlService.java          |    2 
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java |    5 +
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java      |   30 +++++-----
 src/main/resources/mapper/LocDetlMapper.xml                      |    1 
 src/main/java/com/zy/asrs/service/StaDescService.java            |    2 
 src/main/java/com/zy/common/model/TaskDto.java                   |   38 +++++++++---
 src/main/java/com/zy/asrs/controller/OutController.java          |    2 
 src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java   |   26 ++++++++
 11 files changed, 107 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 483db64..1f44421 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -86,7 +86,7 @@
         List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
         List<LocDto> locDtos = new ArrayList<>();
         for (OrderDetl orderDetl : orderDetls) {
-            double issued = Optional.ofNullable(orderDetl.getAnfme()).orElse(0.0D) ;
+            double issued = Optional.ofNullable(orderDetl.getAnfme()).orElse(0.0D);
             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null);
             for (LocDetl locDetl : locDetls) {
                 if (issued > 0) {
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index d098b7a..b2c328a 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -14,6 +14,8 @@
 
     OrderDetl selectItem(@Param("orderId") Long orderId, @Param("matnr") String matnr, @Param("batch") String batch);
 
+    OrderDetl selectItemByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch);
+
     List<OrderDetl> selectWorkingDetls(Long orderId);
 
     int increase(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 8db8550..288c794 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -11,6 +11,8 @@
 
     OrderDetl selectItem(Long orderId, String matnr, String batch);
 
+    OrderDetl selectItem(String orderNo, String matnr, String batch);
+
     OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch);
 
     boolean increase(Long orderId, String matnr, String batch, Double qty);
diff --git a/src/main/java/com/zy/asrs/service/StaDescService.java b/src/main/java/com/zy/asrs/service/StaDescService.java
index a5824b1..fcbe144 100644
--- a/src/main/java/com/zy/asrs/service/StaDescService.java
+++ b/src/main/java/com/zy/asrs/service/StaDescService.java
@@ -9,4 +9,6 @@
 
     List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo);
 
+    StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo);
+
 }
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 a823d3e..65e721f 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -24,6 +24,11 @@
     }
 
     @Override
+    public OrderDetl selectItem(String orderNo, String matnr, String batch) {
+        return this.baseMapper.selectItemByOrderNo(orderNo, matnr, batch);
+    }
+
+    @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/StaDescServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
index 38c9dd1..733612b 100644
--- a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -1,6 +1,10 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.StaDesc;
 import com.zy.asrs.mapper.StaDescMapper;
 import com.zy.asrs.service.StaDescService;
@@ -15,4 +19,26 @@
     public List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo) {
         return this.baseMapper.queryOutStaNosByLocNo(locNo, typeNo);
     }
+
+    @Override
+    public StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo) {
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", typeNo)
+                .eq("stn_no", stnNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = this.selectOne(wrapper);
+        if (staDesc == null) {
+            wrapper = new EntityWrapper<StaDesc>()
+                    .eq("type_no", typeNo)
+                    .eq("crn_no", crnNo);
+            List<StaDesc> staDescs = this.selectList(wrapper);
+            if (Cools.isEmpty(staDescs)) {
+                throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+            }
+            // todo:luxiaotao
+            return staDescs.get(0);
+        }
+        return staDesc;
+    }
+
 }
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 e218f63..0ce118a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -68,6 +68,10 @@
     private WmsService wmsService;
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
 
     @Override
     @Transactional
@@ -273,15 +277,8 @@
         // 鑾峰彇搴撲綅
         LocMast locMast = locMastService.selectById(taskDto.getLocNo());
         // 鑾峰彇璺緞
-        Integer ioType = taskDto.isAll() ? 101 : 103;
-        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                .eq("type_no", ioType)
-                .eq("stn_no", staNo.getDevNo())
-                .eq("crn_no", locMast.getCrnNo());
-        StaDesc staDesc = staDescService.selectOne(wrapper);
-        if (Cools.isEmpty(staDesc)) {
-            throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
-        }
+        int ioType = taskDto.isAll() ? 101 : 103;
+        StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
         // 鐢熸垚宸ヤ綔妗�
@@ -309,14 +306,17 @@
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
-            // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
-            if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+
+            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+
             WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.setIoTime(now);
             wrkDetl.setWrkNo(workNo);
-            wrkDetl.setIoTime(new Date());
-            Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
-            wrkDetl.setAnfme(anfme); // 鏁伴噺
-            VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
+            wrkDetl.setBatch(locDto.getBatch());
+            wrkDetl.setOrderNo(locDto.getOrderNo());
+            wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+            VersionUtils.setWrkDetl(wrkDetl, orderDetl); // 鐗堟湰鎺у埗
             wrkDetl.setAppeTime(now);
             wrkDetl.setAppeUser(userId);
             wrkDetl.setModiTime(now);
diff --git a/src/main/java/com/zy/asrs/utils/VersionUtils.java b/src/main/java/com/zy/asrs/utils/VersionUtils.java
index 55377b5..07bf914 100644
--- a/src/main/java/com/zy/asrs/utils/VersionUtils.java
+++ b/src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -100,6 +100,17 @@
         waitPakIn.setAltme(orderDetl.getUnit()); // 鍗曚綅
     }
 
+    public static void setWrkDetl(WrkDetl wrkDetl, OrderDetl orderDetl) {
+        wrkDetl.setMatnr(orderDetl.getMatnr()); // 鐗╂枡缂栧彿
+        wrkDetl.setMaktx(orderDetl.getMaktx()); // 鐗╂枡鎻忚堪
+        wrkDetl.setBatch(orderDetl.getBatch());
+        wrkDetl.setOrderNo(orderDetl.getOrderNo());
+        wrkDetl.setLgnum(orderDetl.getSpecs()); // 瑙勬牸
+        wrkDetl.setType(orderDetl.getModel()); // 鍨嬪彿
+        wrkDetl.setSupplier(orderDetl.getSupplier()); // 鎵瑰彿
+        wrkDetl.setAltme(orderDetl.getUnit()); // 鍗曚綅
+    }
+
 
     // excel ----------------------------------------------------------------------
 
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index afcf9d0..63ea7b4 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -8,10 +8,7 @@
 import com.zy.asrs.service.LocDetlService;
 import lombok.Data;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * Created by vincent on 2022/3/28
@@ -74,28 +71,47 @@
         // 姹囨�讳笉鑰冭檻鎵瑰彿
         List<DetlDto> detlDtos = new ArrayList<>();
         for (LocDto locDto : this.getLocDtos()) {
-            DetlDto dto = new DetlDto(locDto.getMatnr(), null, locDto.getAnfme());
+            DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme());
             if (DetlDto.has(detlDtos, dto)) {
-                DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), null);
+                DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch());
                 assert detlDto != null;
                 detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme());
             } else {
-                detlDtos.add(new DetlDto(locDto.getMatnr(), null, locDto.getAnfme()));
+                detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()));
             }
         }
 
         // 鏌ヨ褰撳墠搴撲綅鍙锋墍鏈夌殑搴撳瓨鏄庣粏
         LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
-        // todo
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo));
         if (locDetls == null || locDetls.isEmpty()){
-            throw new CoolException("璁$畻婊℃澘澶辫触锛屽簱浣嶅彿=" + this.locNo);
+            throw new CoolException("妫�绱㈠簱瀛樻槑缁嗗け璐ワ紝搴撲綅鍙�=" + this.locNo);
         }
         int sameNumber = 0;
         for (LocDetl locDetl : locDetls) {
-            for (DetlDto detlDto : detlDtos) {
-                if (detlDto.getLocDetl().getMatnr().equals(locDetl.getMatnr()) && dto.getCount().equals(locDetl.getAnfme())) {
+            Iterator<DetlDto> iterator = detlDtos.iterator();
+            while (iterator.hasNext()) {
+                DetlDto dto = iterator.next();
+                if (!dto.getMatnr().equals(locDetl.getMatnr())) {
+                    continue;
+                }
+                if (Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
+                    continue;
+                }
+                if (!Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(locDetl.getBatch())) {
+                    continue;
+                }
+                if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
+                    if (!dto.getBatch().equals(locDetl.getBatch())) {
+                        continue;
+                    }
+                }
+                if (dto.getAnfme() > locDetl.getAnfme()) {
+                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
+                }
+                if (dto.getAnfme().equals(locDetl.getAnfme())) {
                     sameNumber++;
+                    iterator.remove();
                     break;
                 }
             }
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 6ee3578..a7bd79d 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -158,6 +158,7 @@
         order by
         DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time)
         desc,
+        NEWID(),
         case
         when (left(a.loc_no, 2) = '01') then 0
         when (left(a.loc_no, 2) = '02') then 1
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 949aa5e..2875292 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -46,6 +46,21 @@
         </choose>
     </select>
 
+    <select id="selectItemByOrderNo" resultMap="BaseResultMap">
+        select * from man_order_detl
+        where 1=1
+        and order_no = #{orderNo}
+        and matnr = #{matnr}
+        <choose>
+            <when test="batch != null and batch != ''">
+                and batch = #{batch}
+            </when>
+            <otherwise>
+                and (batch IS NULL OR batch = '')
+            </otherwise>
+        </choose>
+    </select>
+
     <select id="selectWorkingDetls" resultMap="BaseResultMap">
         select * from man_order_detl
         where 1=1

--
Gitblit v1.9.1