From 4d84a1d49dde503f7798c56205b83b11e85198a0 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期五, 20 八月 2021 16:31:49 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/MatStoreService.java          |   13 ++++
 src/main/java/com/zy/asrs/service/impl/MatStoreServiceImpl.java |  150 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 163 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/MatStoreService.java b/src/main/java/com/zy/asrs/service/MatStoreService.java
new file mode 100644
index 0000000..ed4d473
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/MatStoreService.java
@@ -0,0 +1,13 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.param.FullStoreParam;
+
+public interface MatStoreService {
+
+    /**
+     * 鍏ㄦ澘鍏ュ簱
+     * @return 搴撲綅鍙�
+     */
+    String startupFullStore(FullStoreParam param, Long userId);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MatStoreServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatStoreServiceImpl.java
new file mode 100644
index 0000000..05bd433
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/MatStoreServiceImpl.java
@@ -0,0 +1,150 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.FullStoreParam;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.model.StartupDto;
+import com.zy.common.service.CommonService;
+import com.zy.ints.entity.WaitMatin;
+import com.zy.ints.service.WaitMatinService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class MatStoreServiceImpl implements MatStoreService {
+
+    // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨�
+    private static final int DEFAULT_WORK_NO_TYPE = 0;
+    // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆
+    private static final int DEFAULT_ROW_NO_TYPE = 1;
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private BasDevpService basDevpService;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private MatCodeService matCodeService;
+    @Autowired
+    private WaitMatinService matinService;
+
+    @Override
+    @Transactional
+    public String startupFullStore(FullStoreParam param, Long userId) {
+        // 鍙傛暟闈炵┖鍒ゆ柇
+        if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+        // 妫�绱㈠簱浣�
+        List<String> matNos = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatNo).distinct().collect(Collectors.toList());
+        StartupDto startupDtodto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matNos, 0);
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細10
+        wrkMast.setCrnNo(startupDtodto.getCrnNo());
+        wrkMast.setSourceStaNo(startupDtodto.getSourceStaNo());
+        wrkMast.setStaNo(startupDtodto.getStaNo());
+        wrkMast.setLocNo(startupDtodto.getLocNo());
+        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("N");
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(new Date());
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(new Date());
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔涓绘。澶辫触");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        List<MatCodeCountDto> matDtos = new ArrayList<>();
+        param.getList().forEach(elem -> {
+            matDtos.add(new MatCodeCountDto(elem.getBillNo(),elem.getSeqNo(),elem.getMatNo(), elem.getCount()));
+        });
+        for (MatCodeCountDto dto : matDtos) {
+            MatCode matCode = matCodeService.selectById(dto.getMatNo());
+            if (Cools.isEmpty(matCode)){
+                throw new CoolException("浜у搧缂栫爜鏁版嵁涓虹┖");
+            }
+            // 淇濇寔宸ヤ綔妗f槑缁�
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setIoTime(new Date());
+            wrkDetl.setBillNo(dto.getBillNo());
+            wrkDetl.setSeqNo(dto.getSeqNo());
+            wrkDetl.setQty(dto.getCount()); // 鏁伴噺
+            VersionUtils.setWrkDetl(wrkDetl, matCode); // 鐗堟湰鎺у埗
+            wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鏉$爜
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setAppeTime(new Date());
+            wrkDetl.setModiUser(userId);
+            wrkDetl.setModiTime(new Date());
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗eけ璐�");
+            }
+            else {
+                //鏇存柊鍏ュ簱閫氱煡妗�
+                WaitMatin waitMatin = matinService.selectOne(new EntityWrapper<WaitMatin>().eq("bill_no",dto.getBillNo()).eq("seq_no",dto.getSeqNo()));
+                if(dto.getCount() > (waitMatin.getQty() - waitMatin.getInQty())){
+                    throw new CoolException("鍏ュ簱鏁伴噺瓒呰繃浜嗗彲鍏ュ簱閲�");
+                }
+                waitMatin.setIoStatus(1);//鍏ュ簱涓�
+                waitMatin.setInQty(waitMatin.getInQty()+dto.getCount()); //宸插叆搴撻噺
+                waitMatin.setModiTime(new Date());
+                if(!matinService.update(waitMatin,new EntityWrapper<WaitMatin>().eq("bill_no",dto.getBillNo()).eq("seq_no",dto.getSeqNo()))){
+                    throw new CoolException("鏇存柊鍏ュ簱閫氱煡妗eけ璐�");
+                }
+            }
+        }
+//        wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiUser(userId);
+        sourceStaNo.setModiTime(new Date());
+        if (!basDevpService.updateById(sourceStaNo)){
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+        // 鏇存柊鐩爣搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(startupDtodto.getLocNo());
+        if (locMast.getLocSts().equals("O")){
+            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+            locMast.setModiUser(userId);
+            locMast.setModiTime(new Date());
+            if (!locMastService.updateById(locMast)){
+                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException(startupDtodto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+        }
+        return startupDtodto.getLocNo();
+    }
+}

--
Gitblit v1.9.1