From 649f502728e36428275db8969695cecff4ac5e55 Mon Sep 17 00:00:00 2001
From: admin <841110950@qq.com>
Date: 星期三, 25 八月 2021 17:08:35 +0800
Subject: [PATCH] 1.0.0

---
 src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java |   98 ++++++++++++++++++++++++------------------------
 1 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
index 8bc2e2c..3747006 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
@@ -11,6 +11,9 @@
 import com.zy.common.model.LocDetlDto;
 import com.zy.common.model.OutLocDto;
 import com.zy.common.service.CommonService;
+import com.zy.ints.entity.WaitMatout;
+import com.zy.ints.mapper.WaitMatoutMapper;
+import com.zy.ints.service.WaitMatoutService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,58 +41,61 @@
     private WrkDetlService wrkDetlService;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WaitMatoutMapper waitMatoutMapper;
+    @Autowired
+    private WaitMatoutService waitMatoutService;
 
     @Override
     @Transactional
     public void startupMatOut(StockOutParam param, Long userId){
+
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
-            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatNo(), paramLocDetl.getCount())) {
-                LocDetl sqlParam = new LocDetl();
-                sqlParam.setLocNo(paramLocDetl.getLocNo());
-                sqlParam.setMatNo(paramLocDetl.getMatNo());
-                LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
-                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+            if (!Cools.isEmpty(paramLocDetl.getMatNo())) {
+                //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭�
+                List<LocDetl> locDetls=locDetlService.getlocDetlList(paramLocDetl.getMatNo());
+                for (LocDetl locDetl : locDetls) {
+                    WaitMatout waitMatout = waitMatoutService.selectOne(new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo()).eq("seq_no",paramLocDetl.getSeqNo()));
+                    Double outQty = paramLocDetl.getCount() - waitMatout.getOutQty();
+                    if(waitMatout.getOutQty() >= waitMatout.getQty()){
+                        break;
+                    }
+                    // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+                    Double sumCount=locDetlService.getLocDetlSumQty(locDetl.getLocNo());
+                    int ioType=0;
+                    ioType=sumCount-outQty>0?103 : 101;
+
+                    if (outQty >= locDetl.getQty()){
+                        //鐢熸垚鏂囨。璁板綍
+                        stockOut(staNo,new LocDetlDto(locDetl,locDetl.getQty()),ioType,userId);
+                        waitMatout.setOutQty(waitMatout.getOutQty() + locDetl.getQty());
+                        //淇敼璁板綍
+                        Integer update = waitMatoutMapper.update(waitMatout, new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo())
+                                                                .eq("seq_no",paramLocDetl.getSeqNo()));
+                    }else {
+                        //鐢熸垚鏂囨。璁板綍
+                        stockOut(staNo,new LocDetlDto(locDetl,outQty),ioType,userId);
+                        waitMatout.setOutQty(waitMatout.getOutQty() + outQty);
+                        //淇敼璁板綍
+                        Integer update = waitMatoutMapper.update(waitMatout, new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo())
+                                                                .eq("seq_no",paramLocDetl.getSeqNo()));
+                    }
+                }
             }
-        }
-        if (!locDetlDtos.isEmpty()) {
-            // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-            stockOut(staNo, locDetlDtos, null, userId);
-        } else {
-            throw new CoolException("搴撲綅浜у搧涓嶅瓨鍦�");
         }
     }
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
-        // 鍚堝苟鍚岀被椤�
-        Set<String> locNos = new HashSet<>();
-        locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
-        List<OutLocDto> dtos = new ArrayList<>();
-        for (String locNo : locNos) {
-            List<LocDetlDto> list = new ArrayList<>();
-            Iterator<LocDetlDto> iterator = locDetlDtos.iterator();
-            while (iterator.hasNext()) {
-                LocDetlDto dto = iterator.next();
-                if (locNo.equals(dto.getLocDetl().getLocNo())) {
-                    list.add(dto);
-                    iterator.remove();
-                }
-            }
-            dtos.add(new OutLocDto(locNo, list));
-        }
+    public void stockOut(BasDevp staNo, LocDetlDto locDetlDtos, Integer ioType, Long userId) {
         // 鐢熸垚宸ヤ綔妗�
-        for (OutLocDto dto : dtos) {
-            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
-            if (ioType == null) {
-                ioType = dto.isAll() ? 101 : 103;
-            }
+            LocDetl locDetl=locDetlDtos.getLocDetl();
             // 鑾峰彇搴撲綅
-            LocMast locMast = locMastService.selectById(dto.getLocNo());
+            LocMast locMast = locMastService.selectById(locDetl.getLocNo());
             // 鑾峰彇璺緞
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                     .eq("type_no", ioType)
@@ -111,7 +117,7 @@
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
             wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
-            wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
             wrkMast.setExitMk("N"); // 閫�鍑�
@@ -122,18 +128,15 @@
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(new Date());
             if (!wrkMastService.insert(wrkMast)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locDetl.getLocNo());
             }
-            // 鐢熸垚宸ヤ綔妗f槑缁�
-            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                 // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (locDetlDtos.getCount()==null || locDetlDtos.getCount() <= 0.0D) {return;}
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(new Date());
-                Double qty = ioType==101?detlDto.getLocDetl().getQty():detlDto.getCount();
-                wrkDetl.setQty(qty); // 鏁伴噺
-                VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
+                wrkDetl.setQty(locDetlDtos.getCount()); // 鏁伴噺
+                VersionUtils.setWrkDetl(wrkDetl, locDetlDtos.getLocDetl()); // 鐗堟湰鎺у埗
                 wrkDetl.setAppeTime(new Date());
                 wrkDetl.setAppeUser(userId);
                 wrkDetl.setModiTime(new Date());
@@ -141,20 +144,17 @@
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
-            }
             // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
-            locMast = locMastService.selectById(dto.getLocNo());
+            locMast = locMastService.selectById(locDetl.getLocNo());
             if (locMast.getLocSts().equals("F")) {
                 locMast.setLocSts(ioType==101?"R":"P");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(new Date());
                 if (!locMastService.updateById(locMast)) {
-                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+locDetl.getLocNo());
                 }
             } else {
-                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+                throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
             }
         }
-    }
-
 }

--
Gitblit v1.9.1