From 439bcbeb1740a4d982adf4708de8bfa845191fa2 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 08 七月 2020 14:12:36 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 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 496d6bb..4e8fe30 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -46,6 +46,8 @@
     private LocDetlService locDetlService;
     @Autowired
     private MatCodeService matCodeService;
+    @Autowired
+    private AdjDetlService adjDetlService;
 
     @Override
     @Transactional
@@ -71,6 +73,7 @@
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
         wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
@@ -91,7 +94,7 @@
         param.getList().forEach(elem -> {
             matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount()));
         });
-        wrkDetlService.createWorkDetail(workNo, matDtos, userId);
+        wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
         // 鏇存柊婧愮珯鐐逛俊鎭�
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
@@ -121,18 +124,18 @@
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
-        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
-            if (!Cools.isEmpty(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getCount())) {
+        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                 LocDetl sqlParam = new LocDetl();
-                sqlParam.setLocNo(locDetl.getLocNo());
-                sqlParam.setMatnr(locDetl.getMatnr());
+                sqlParam.setLocNo(paramLocDetl.getLocNo());
+                sqlParam.setMatnr(paramLocDetl.getMatnr());
                 LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
-                if (null != one) locDetlDtos.add(new LocDetlDto(one, locDetl.getCount()));
+                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
         if (!locDetlDtos.isEmpty()) {
-            // 鍚姩鍑哄簱寮�濮�
-            stockOut(staNo, locDetlDtos, userId);
+            // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
+            stockOut(staNo, locDetlDtos, 101, userId);
         } else {
             throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
         }
@@ -140,9 +143,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Long userId) {
-        // 鐢熸垚宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+    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()));
@@ -165,19 +166,21 @@
             LocMast locMast = locMastService.selectById(dto.getLocNo());
             // 鑾峰彇璺緞
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                    .eq("type_no", 101)
+                    .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 workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
             // 鐢熸垚宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細101.鍑哄簱
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬侊細101.鍑哄簱
             wrkMast.setIoPri(13D); // 浼樺厛绾э細13
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
@@ -197,12 +200,14 @@
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount() <= 0.0D) {continue;}
+                // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
+                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(new Date());
                 wrkDetl.setMatnr(detlDto.getLocDetl().getMatnr());
-                wrkDetl.setAnfme(detlDto.getCount()); // 鏁伴噺
+                Double anfme = ioType==101?detlDto.getCount():detlDto.getLocDetl().getAnfme();
+                wrkDetl.setAnfme(anfme); // 鏁伴噺
                 wrkDetl.setZmatid(detlDto.getLocDetl().getZmatid());
                 wrkDetl.setTbpos(detlDto.getLocDetl().getTbpos());
                 wrkDetl.setTbnum(detlDto.getLocDetl().getTbnum());
@@ -353,6 +358,30 @@
 
     @Override
     @Transactional
+    public void locCheckOut(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.getMatnr())) {
+                LocDetl sqlParam = new LocDetl();
+                sqlParam.setLocNo(paramLocDetl.getLocNo());
+                sqlParam.setMatnr(paramLocDetl.getMatnr());
+                LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
+                if (null != one) locDetlDtos.add(new LocDetlDto(one, one.getAnfme()));
+            }
+        }
+        if (!locDetlDtos.isEmpty()) {
+            // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+            stockOut(staNo, locDetlDtos, 107, userId);
+        } else {
+            throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+        }
+    }
+
+    @Override
+    @Transactional
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         if (Cools.isEmpty(sourceLoc)){
@@ -422,7 +451,7 @@
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException("棰勭害婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocType$());
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocType$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocType().equals("O")) {
@@ -502,6 +531,13 @@
                 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 {
                 // 濡傛灉鏁伴噺淇敼锛屽垯鏇存柊搴撳瓨鏄庣粏
@@ -522,9 +558,15 @@
                             throw new CoolException("淇敼搴撳瓨鏄庣粏澶辫触");
                         }
                     }
+                    // 淇濆瓨璋冩暣璁板綍
+                    AdjDetl adjDetl = new AdjDetl();
+                    adjDetl.setLocNo(locMast.getLocNo());
+                    adjDetl.setMatNo(adjust.getMatnr());
+                    adjDetl.setOriQty(one.getAnfme());
+                    adjDetl.setAdjQty(adjust.getCount());
+                    adjDetlService.save(adjDetl, userId);
                 }
             }
-
         }
     }
 

--
Gitblit v1.9.1