From 580a85c33e14a7d83d63de555bafc943547015f8 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 26 三月 2022 14:46:22 +0800
Subject: [PATCH] #杰克缝纫机立库 【订单出库预览】

---
 src/main/java/com/zy/asrs/controller/OpenController.java |  147 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 131 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index df9bbd4..0a87815 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.controller;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
@@ -14,15 +15,11 @@
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDetlDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * Created by vincent on 2021/3/19
@@ -31,6 +28,7 @@
 @RequestMapping("/open/api")
 public class OpenController {
 
+    private boolean pickSite = false;
     @Autowired
     private LocDetlService locDetlService;
     @Autowired
@@ -41,6 +39,8 @@
     private BasDevpService basDevpService;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
 
     @PostMapping("/stockOut/prew")
     @Transactional
@@ -118,6 +118,9 @@
                     throw new CoolException("褰撳墠琛ヤ粨浠诲姟姝e湪鎵ц锛岃鑰愬績绛夊緟");
                 }
                 Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D);
+                if (!Cools.isEmpty(param.getAllotNo()) && sumAnfme < param.getAnfme()) {
+                    throw new CoolException("绔嬪簱搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme));
+                }
                 double lack = 0.0D;
                 if (sumAnfme < param.getAnfme()) {
                     lack = param.getAnfme() - sumAnfme;
@@ -137,6 +140,8 @@
                     if (issued > 0) {
                         // 鐢熸垚鍑哄簱宸ヤ綔妗�
 
+                        int priorCount = jdbcTemplate.queryForObject("select isnull(count(*),0) from man_prior where 1=1 and matnr = '" + param.getMatnr() + "'", Integer.class);
+
                         // 鍏ㄦ澘
                         if (issued>=locDetl.getAnfme()) {
                             BasDevp staNo = basDevpService.checkSiteStatus(103);
@@ -145,16 +150,28 @@
                             dto.setLocDetl(locDetl);
                             dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
                             detlDtos.add(dto);
-                            workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo());
+                            workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()), null);
                         // 鎷f枡
                         } else {
-                            BasDevp staNo = basDevpService.checkSiteStatus(107);
-                            List<LocDetlDto> detlDtos = new ArrayList<>();
-                            LocDetlDto dto = new LocDetlDto();
-                            dto.setLocDetl(locDetl);
-                            dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
-                            detlDtos.add(dto);
-                            workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo());
+
+                            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);
+                                workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()), 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);
+                                workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()), null);
+                            }
+
                         }
 
                         PakoutVo pakoutVo = new PakoutVo();
@@ -171,9 +188,107 @@
 
             }
         }
-
+        pickSite = !pickSite;
         return R.ok().add(result);
     }
 
+    @PostMapping("/available/take/site")
+    @Transactional
+    public R availableTakeSite(){
+        List<Map<String, Object>> result = new ArrayList<>();
+        List<Integer> outSite = basDevpService.getAvailableOutSite(101);
+        for (Integer siteId : outSite) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("siteId", siteId);
+            map.put("desc", siteId + "锛堝叏鏉垮嚭搴撳彛锛�");
+            result.add(map);
+        }
+        List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103);
+        for (Integer siteId : pickOutSite) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("siteId", siteId);
+            map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�");
+            result.add(map);
+        }
+        return R.ok().add(result);
+    }
 
+    @PostMapping("/get/asrsLocDetl")
+    @Transactional
+    public R queryLocDetl(String matnr) {
+        List<LocDetl> locDetls = locDetlService.getAsrsLocDetl(matnr);
+        return R.ok().add(locDetls);
+    }
+
+    @PostMapping("/stockOut/locMode")
+    @Transactional
+    public R stockOutLocMode(@RequestBody List<OpenApiStockOutParam> params){
+        List<PakoutVo> result = new ArrayList<>();
+        if (!Cools.isEmpty(params)) {
+            for (OpenApiStockOutParam param : params) {
+                // 鎺ㄨ崘璐т綅琛ヤ粨宸ヤ綔妗i槻閲�
+                if (wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("packed", param.getAllotNo()).le("wrk_sts", 14)) > 0) {
+                    throw new CoolException("褰撳墠琛ヤ粨浠诲姟姝e湪鎵ц锛岃鑰愬績绛夊緟");
+                }
+                Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D);
+                if (!Cools.isEmpty(param.getAllotNo()) && sumAnfme < param.getAnfme()) {
+                    throw new CoolException("绔嬪簱搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme));
+                }
+                double lack = 0.0D;
+                if (sumAnfme < param.getAnfme()) {
+                    lack = param.getAnfme() - sumAnfme;
+                    PakoutVo pakoutVo = new PakoutVo();
+                    pakoutVo.setLocNo("缂鸿揣");
+                    pakoutVo.setAnfme(lack);
+                    pakoutVo.setMatnr(param.getMatnr());
+//                    pakoutVo.setZpallet("param.getZpallet()");
+                    result.add(pakoutVo);
+
+//                    throw new CoolException(param.getMatnr() + "鐗╂枡鏁伴噺涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme));
+                }
+
+                // 鏍规嵁绔嬪簱搴撲綅鐮佸幓鑾峰彇绔嬪簱淇℃伅
+                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
+                if (locDetls.size() == 0) {
+                    throw new CoolException("鏈煡璇㈠埌搴撲綅淇℃伅锛�");
+                }
+                double issued = Optional.of(param.getAnfme()-lack).orElse(0.0D) ;
+                for (LocDetl locDetl : locDetls) {
+                    // 鐢熸垚鍑哄簱宸ヤ綔妗�
+
+                    Integer locNoNum = locDetlService.countLocNoNum(locDetl.getLocNo());
+                    // 鍏ㄦ澘
+                    if (locNoNum == 1) {
+                        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);
+                        workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()), null);
+                    } else { // 鎷f枡
+                        BasDevp staNo = basDevpService.checkSiteStatus(107);
+                        List<LocDetlDto> detlDtos = new ArrayList<>();
+                        LocDetlDto dto = new LocDetlDto();
+                        dto.setLocDetl(locDetl);
+                        dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                        detlDtos.add(dto);
+                        workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()), null);
+                    }
+                    PakoutVo pakoutVo = new PakoutVo();
+                    pakoutVo.setLocNo(locDetl.getLocNo());
+                    pakoutVo.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                    pakoutVo.setMatnr(locDetl.getMatnr());
+                    pakoutVo.setZpallet(locDetl.getZpallet());
+                    result.add(pakoutVo);
+
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                }
+
+            }
+        }
+
+        return R.ok().add(result);
+    }
 }

--
Gitblit v1.9.1