From 07cdd671772a0197f46eeb9d4d8c8df1454d3416 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 12 六月 2021 16:42:58 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/OpenController.java |   85 +++++++++++++++++++++++++++++++-----------
 1 files changed, 63 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 88cc293..336b816 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -14,11 +14,9 @@
 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;
@@ -41,6 +39,8 @@
     private BasDevpService basDevpService;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
 
     @PostMapping("/stockOut/prew")
     @Transactional
@@ -50,17 +50,33 @@
         boolean error = false;
         for (OpenApiStockOutParam param : params) {
             Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D);
+            double lack = 0.0D;
             if (sumAnfme < param.getAnfme()) {
+                lack = param.getAnfme() - sumAnfme;
                 if (!error) {
                     error = true;
                 }
                 MatCode mat = matCodeService.selectById(param.getMatnr());
+                // 瑙嗗浘瀵硅薄
+                StoPreTab tab = new StoPreTab();
+                tab.setTitle(param.getMatnr() + (mat==null?"": "锛�" + mat.getMatName() + "锛�"));
+                tab.setMatnr(param.getMatnr());
+                tab.setMaktx((mat==null?"": "锛�" + mat.getMatName() + "锛�"));
+                tab.setAnfme(param.getTotal());
+                tab.setLocNo("缂鸿揣");
+                tab.setTotal(lack);
+                tab.setReduce(lack);
+                tab.setRemQty(0.0D);
+                tab.setPrior(false);
+                tab.setPrior$("脳");
+                tab.setType(0);
+                result.add(tab);
+
                 errorMsg.append(mat == null ? param.getMatnr() : mat.getMatName()).append("搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細").append(param.getAnfme() - sumAnfme).append("</br>");
-                continue;
+//                continue;
             }
             List<LocDetl> locDetls = locDetlService.selectPakoutByRule(param.getMatnr());
-            double issued = Optional.ofNullable(param.getAnfme()).orElse(0.0D) ;
-            double anfme = issued;
+            double issued = Optional.of(param.getAnfme() - lack).orElse(0.0D) ;
             for (LocDetl locDetl : locDetls) {
                 if (issued > 0) {
                     // 瑙嗗浘瀵硅薄
@@ -85,10 +101,10 @@
             }
 
         }
-        if (error) {
-            return R.error(errorMsg.toString());
-        }
-        return R.ok().add(result);
+//        if (error) {
+//            return R.error(errorMsg.toString());
+//        }
+        return R.ok(errorMsg).add(result);
     }
 
     @PostMapping("/stockOut")
@@ -102,16 +118,29 @@
                     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()) {
-                    throw new CoolException(param.getMatnr() + "鐗╂枡鏁伴噺涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme));
+                    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.selectPakoutByRule(param.getMatnr());
-                double issued = Optional.ofNullable(param.getAnfme()).orElse(0.0D) ;
-                double anfme = issued;
+                double issued = Optional.of(param.getAnfme()-lack).orElse(0.0D) ;
                 for (LocDetl locDetl : locDetls) {
                     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()) {
@@ -121,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(113);
+                                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();

--
Gitblit v1.9.1