From abf98922f65f1434b9bde62d251cb439189921d1 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 26 三月 2022 13:56:38 +0800
Subject: [PATCH] #杰克缝纫机立库 【订单出库优化】

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   74 +++++++++++++++++++++++++++++++++++-
 1 files changed, 71 insertions(+), 3 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 3d08f6b..ea222aa 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.BaseRes;
@@ -19,7 +20,9 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.service.wms.Result;
 import com.zy.common.service.wms.WmsService;
+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;
 
@@ -30,6 +33,7 @@
 /**
  * Created by vincent on 2020/6/11
  */
+@Slf4j
 @Service
 public class WorkServiceImpl implements WorkService {
 
@@ -76,6 +80,8 @@
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+        log.info(JSON.toJSONString(locTypeDto));
+        log.info("{}鍏ュ簱鍙e昂瀵告娴嬶細{}", param.getDevpNo(), locTypeDto.getLocType1()==1?"浣庤鏍煎簱浣�":"楂樿鏍煎簱浣�");
         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);
         // 鐢熸垚宸ヤ綔鍙�
@@ -108,11 +114,11 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
-        List<MatCodeCountDto> matDtos = new ArrayList<>();
+        List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount()));
+            detlDtos.add(new DetlDto(elem.getMatNo(), elem.getCount()));
         });
-        wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
+        wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
         // 鏇存柊婧愮珯鐐逛俊鎭�
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
@@ -668,6 +674,18 @@
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                 locSts = "F";
+                // 閿�鍞崟鍏宠仈锛屽垯鐢熸垚鏂扮殑鍑哄簱浠诲姟
+                if (wrkMast.getPdcType().equals("Y")) {
+                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+                    for (WrkDetl wrkDetl : wrkDetls) {
+                        Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(wrkDetl.getMatnr())).orElse(0.0D);
+                        if (sumAnfme < wrkDetl.getAnfme()) {
+                            throw new CoolException("鍙栨秷澶辫触锛佸簱瀛樹笉瓒充互閲嶆柊鐢熸垚鍑哄簱浣滀笟");
+                        }
+                    }
+                    // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+                    stockOutRe(wrkMast, wrkDetls);
+                }
             // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 110) {
                 locSts = "D";
@@ -780,4 +798,54 @@
         }
     }
 
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+    private boolean pickSite = false;
+    private void stockOutRe(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
+        for (WrkDetl wrkDetl : wrkDetls) {
+            List<LocDetl> locDetls = locDetlService.selectPakoutByRule(wrkDetl.getMatnr());
+            double issued = wrkDetl.getAnfme();
+            for (LocDetl locDetl : locDetls) {
+                if (issued > 0) {
+                    // 鐢熸垚鍑哄簱宸ヤ綔妗�
+                    // 鍏ㄦ澘
+                    if (issued>=locDetl.getAnfme()) {
+                        BasDevp staNo = basDevpService.checkSiteStatus(103);
+                        List<LocDetlDto> detlDtos = new ArrayList<>();
+                        LocDetlDto dto = new LocDetlDto();
+                        dto.setLocDetl(locDetl);
+                        dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                        detlDtos.add(dto);
+                        stockOut(staNo, detlDtos, 101, 9527L, null, true, null);
+                        // 鎷f枡
+                    } else {
+                        int priorCount = jdbcTemplate.queryForObject("select isnull(count(*),0) from man_prior where 1=1 and matnr = '" + wrkDetl.getMatnr() + "'", Integer.class);
+                        if (priorCount > 0) {
+                            BasDevp staNo = basDevpService.checkSiteStatus(103);
+                            List<LocDetlDto> detlDtos = new ArrayList<>();
+                            LocDetlDto dto = new LocDetlDto();
+                            dto.setLocDetl(locDetl);
+                            dto.setCount(locDetl.getAnfme());
+                            detlDtos.add(dto);
+                            stockOut(staNo, detlDtos, 101, 9527L,null, true,locDetl.getAnfme()-issued);
+                        } else {
+                            BasDevp staNo = basDevpService.checkSiteStatus(pickSite?113:109);
+                            List<LocDetlDto> detlDtos = new ArrayList<>();
+                            LocDetlDto dto = new LocDetlDto();
+                            dto.setLocDetl(locDetl);
+                            dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                            detlDtos.add(dto);
+                            stockOut(staNo, detlDtos, 103, 9527L, null, true, null);
+                        }
+
+                    }
+
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                }
+            }
+        }
+        pickSite = !pickSite;
+    }
+
 }

--
Gitblit v1.9.1