From 2aa1e6940784c314bc350b6d4b2d1a2feed33a70 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期一, 11 四月 2022 13:46:27 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  177 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 108 insertions(+), 69 deletions(-)

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 9886899..b051cbf 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,7 +13,6 @@
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.*;
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
@@ -79,8 +78,8 @@
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
-        List<String> matNos = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatNo).distinct().collect(Collectors.toList());
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matNos, locTypeDto, 0);
+        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
+        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0);
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
@@ -111,7 +110,7 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatNo(), elem.getBatch(), elem.getAnfme());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
             if (DetlDto.has(detlDtos, detlDto)) {
                 DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
                 assert detlDto1 != null;
@@ -581,84 +580,124 @@
     @Override
     @Transactional
     public void adjustLocDetl(LocDetlAdjustParam param, Long userId) {
+        param.integrate();
         LocMast locMast = locMastService.selectById(param.getLocNo());
         if (Cools.isEmpty(locMast)) {
             throw new CoolException("搴撲綅涓嶅瓨鍦�");
         }
-        for (LocDetlAdjustParam.LocDetlAdjust adjust : param.getList()) {
-            if (Cools.isEmpty(adjust.getMatnr())) {
-                throw new CoolException(BaseRes.PARAM);
-            }
-            LocDetl sqlParam = new LocDetl();
-            sqlParam.setLocNo(locMast.getLocNo());
-            sqlParam.setMatnr(adjust.getMatnr());
-            LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
-            // 淇濆瓨鏂板簱瀛樻槑缁�
-            if (Cools.isEmpty(one)) {
-                if (adjust.getCount() == 0){
-                    continue;
-                }
-                Mat mat = matService.selectByMatnr(adjust.getMatnr());
-                LocDetl locDetl = new LocDetl();
-                locDetl.sync(mat);
-                locDetl.setLocNo(locMast.getLocNo());
-                locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
-                locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
-                locDetl.setModiTime(new Date());
-                locDetl.setAppeUser(userId);
-                locDetl.setAppeTime(new Date());
-                if (!locDetlService.insert(locDetl)) {
-                    throw new CoolException("淇濆瓨搴撳瓨鏄庣粏澶辫触");
-                }
-                // 淇濆瓨璋冩暣璁板綍
-                AdjDetl adjDetl = new AdjDetl();
-                adjDetl.setLocNo(locDetl.getLocNo());
-                adjDetl.setMatNo(locDetl.getMatnr());
-                adjDetl.setOriQty(0.0D);
-                adjDetl.setAdjQty(adjust.getCount());
-                adjDetlService.save(adjDetl, userId);
-            // 淇敼鍘熷簱瀛樻槑缁�
-            } else {
-                // 濡傛灉鏁伴噺淇敼锛屽垯鏇存柊搴撳瓨鏄庣粏
-                if (!adjust.getCount().equals(one.getAnfme())) {
-                    // 褰撴暟閲忚淇敼涓� 0 鏃讹紝鐩存帴娓呴櫎搴撳瓨鏄庣粏
-                    if (adjust.getCount() == 0) {
-                        // 鍒犻櫎搴撳瓨
-                        if (!locDetlService.delete(new EntityWrapper<>(one))) {
-                            throw new CoolException("娓呴櫎搴撳瓨鏄庣粏澶辫触");
+        if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
+            throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
+        }
+
+        Date now = new Date();
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
+
+        List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+
+        // 淇敼鏁伴噺
+        Iterator<LocDetl> iterator = locDetls.iterator();
+        while (iterator.hasNext()) {
+            LocDetl locDetl = iterator.next();
+
+            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
+            while (iterator1.hasNext()) {
+                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
+                if (adjust.getCount() == 0) { continue; }
+                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
+                        // todo 鐩樼偣璁板綍
+                        // 淇敼搴撳瓨
+                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
                         }
-                    } else {
-                        LocDetl sqlParam1 = new LocDetl();
-                        sqlParam1.setAnfme(adjust.getCount());
-                        sqlParam1.setModiTime(new Date());
-                        sqlParam1.setModiUser(userId);
-                        if (!locDetlService.update(sqlParam1, new EntityWrapper<LocDetl>()
-                                .eq("loc_no", locMast.getLocNo())
-                                .eq("matnr", adjust.getMatnr()))) {
-                            throw new CoolException("淇敼搴撳瓨鏄庣粏澶辫触");
-                        }
+                        // 淇濆瓨璋冩暣璁板綍
+                        AdjDetl adjDetl = new AdjDetl();
+                        adjDetl.setLocNo(locDetl.getLocNo());
+                        adjDetl.setMatnr(locDetl.getMatnr());
+                        adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setOriQty(locDetl.getAnfme());
+                        adjDetl.setAdjQty(adjust.getCount());
+                        adjDetl.setModiTime(now);
+                        adjDetl.setModiUser(userId);
+                        adjDetl.setAppeTime(now);
+                        adjDetl.setAppeUser(userId);
+                        adjDetlService.save(adjDetl, userId);
                     }
-                    // 淇濆瓨璋冩暣璁板綍
-                    AdjDetl adjDetl = new AdjDetl();
-                    adjDetl.setLocNo(locMast.getLocNo());
-                    adjDetl.setMatNo(adjust.getMatnr());
-                    adjDetl.setOriQty(one.getAnfme());
-                    adjDetl.setAdjQty(adjust.getCount());
-                    adjDetlService.save(adjDetl, userId);
+                    iterator.remove();
+                    iterator1.remove();
                 }
             }
         }
-        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
-        if (locDetls.isEmpty()) {
-            locMast.setLocSts("D");
-            locMast.setModiUser(userId);
-            locMast.setModiTime(new Date());
-            if (!locMastService.updateById(locMast)) {
-                throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+
+        // 鍒犻櫎搴撳瓨
+        for (LocDetl locDetl : locDetls) {
+            // todo 鐩樼偣璁板綍
+            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
             }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locDetl.getLocNo());
+            adjDetl.setMatnr(locDetl.getMatnr());
+            adjDetl.setBatch(locDetl.getBatch());
+            adjDetl.setOriQty(locDetl.getAnfme());
+            adjDetl.setAdjQty(0.0D);
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+            adjDetlService.save(adjDetl, userId);
+        }
+
+        // 娣诲姞搴撳瓨
+        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
+            if (adjust.getCount() == 0.0D) { continue; }
+            Mat mat = matService.selectByMatnr(adjust.getMatnr());
+            LocDetl locDetl = new LocDetl();
+            locDetl.sync(mat);
+            locDetl.setBatch(adjust.getBatch());
+            locDetl.setLocNo(locMast.getLocNo());
+            locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+            locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+            locDetl.setModiTime(now);
+            locDetl.setAppeUser(userId);
+            locDetl.setAppeTime(now);
+            if (!locDetlService.insert(locDetl)) {
+                throw new CoolException("淇濆瓨搴撳瓨鏄庣粏澶辫触");
+            }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locMast.getLocNo());
+            adjDetl.setMatnr(adjust.getMatnr());
+            adjDetl.setBatch(adjust.getBatch());
+            adjDetl.setOriQty(0.0D);
+            adjDetl.setAdjQty(adjust.getCount());
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+            adjDetlService.save(adjDetl, userId);
+        }
+        // 淇敼搴撲綅鐘舵��
+        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
+        if (locMast.getLocSts().equals("F")) {
+            if (count == 0) {
+                locMast.setLocSts("D");
+            }
+        }
+        if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
+            if (count > 0) {
+                locMast.setLocSts("F");
+            }
+        }
+        locMast.setModiUser(userId);
+        locMast.setModiTime(new Date());
+        if (!locMastService.updateById(locMast)) {
+            throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
         }
     }
 
+
     @Override
     @Transactional
     public void cancelWrkMast(String workNo, Long userId) {

--
Gitblit v1.9.1