From 18bce44b2fc1588d9430f3573c1419236fe64869 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 23 十一月 2021 15:45:55 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java         |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   64 +++++++++++++++++++++
 src/main/resources/mapper/LocDetlMapper.xml                 |   24 ++++----
 src/main/java/com/zy/asrs/entity/WrkMast.java               |   65 +++++++++++----------
 src/main/webapp/static/js/wrkMast/wrkMast.js                |   25 ++++++--
 5 files changed, 128 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index ca90c09..25c61cf 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -289,6 +289,7 @@
     @ApiModelProperty(value= "鏉$爜")
     private String barcode;
 
+    // Y:閿�鍞鍗曞嚭搴撲换鍔�
     @ApiModelProperty(value= "")
     @TableField("Pdc_type")
     private String PdcType;
@@ -364,59 +365,59 @@
     }
 
 //    WrkMast wrkMast = new WrkMast(
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 宸ヤ綔鐘舵��
 //            null,    // 鍏ュ嚭搴撶被鍨�
 //            null,    // 鍫嗗灈鏈�
-//            null,    // 
+//            null,    //
 //            null,    // 浼樺厛绾�
-//            null,    // 
+//            null,    //
 //            null,    // 鐩爣搴撲綅
 //            null,    // 鐩爣绔�
 //            null,    // 婧愮珯
 //            null,    // 婧愬簱浣�
-//            null,    // 
+//            null,    //
 //            null,    // 鎷f枡
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 閫�鍑�
-//            null,    // 
+//            null,    //
 //            null,    // 绌烘澘
 //            null,    // 宸ヤ綔鏃堕棿
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
 //            null,    // 鍫嗗灈鏈哄仠姝㈡椂闂�
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 鎷f枡鏃堕棿
 //            null,    // 淇敼浜哄憳
 //            null,    // 淇敼鏃堕棿
 //            null,    // 鍒涘缓鑰�
 //            null,    // 娣诲姞鏃堕棿
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 澶囨敞
-//            null,    // 
-//            null,    // 
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
+//            null,    //
+//            null,    //
 //            null,    // 鏉$爜
-//            null,    // 
-//            null,    // 
+//            null,    //
+//            null,    //
 //            null    // 婊℃澘
 //    );
 
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index a789797..44e3627 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -34,7 +34,7 @@
 
     List<LocDetl> getStockStatisExcel();
 
-    @Select("select sum(anfme) as sum from asr_loc_detl where matnr = #{matnr}")
+    @Select("select sum(a.anfme) as sum from asr_loc_detl a left join asr_loc_mast b on a.loc_no = b.loc_no where b.loc_sts = 'F' and a.matnr = #{matnr}")
     Double selectSumAnfmeByMatnr(@Param("matnr") String matnr);
 
     List<LocDetl> selectPakoutByRule(String matnr);
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 cbbf3d5..6efa9eb 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,6 +13,7 @@
 import com.zy.asrs.entity.param.FullStoreParam;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.entity.result.PakoutVo;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.*;
@@ -22,6 +23,7 @@
 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;
 
@@ -673,6 +675,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";
@@ -785,4 +799,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;
+    }
+
 }
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index c0a5f00..b438b09 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -106,22 +106,22 @@
     </select>
 
     <select id="selectPakoutByRule" resultMap="BaseResultMap">
-        select * from asr_loc_detl
+        select a.* from asr_loc_detl a left join asr_loc_mast b on a.loc_no = b.loc_no
         where 1=1
-        and matnr = #{matnr}
+        and b.loc_sts = 'F'
+        and a.matnr = #{matnr}
         order by
-        anfme asc,
-        DATEPART(yyyy,modi_time),DATEPART(mm,modi_time),DATEPART(dd,modi_time)
+        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time)
         desc,
         case
-        when (left(loc_no, 2) = '01') then 0
-        when (left(loc_no, 2) = '02') then 1
-        when (left(loc_no, 2) = '03') then 1
-        when (left(loc_no, 2) = '04') then 0
-        when (left(loc_no, 2) = '05') then 0
-        when (left(loc_no, 2) = '06') then 1
-        when (left(loc_no, 2) = '07') then 1
-        when (left(loc_no, 2) = '08') then 0
+        when (left(a.loc_no, 2) = '01') then 0
+        when (left(a.loc_no, 2) = '02') then 1
+        when (left(a.loc_no, 2) = '03') then 1
+        when (left(a.loc_no, 2) = '04') then 0
+        when (left(a.loc_no, 2) = '05') then 0
+        when (left(a.loc_no, 2) = '06') then 1
+        when (left(a.loc_no, 2) = '07') then 1
+        when (left(a.loc_no, 2) = '08') then 0
         else 0
         end
         desc
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index 183c81f..b10040c 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -301,13 +301,24 @@
                 break;
             // 鍙栨秷
             case 'cancel':
-                layer.confirm('纭鍙栨秷璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
-                    http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
-                        $(".layui-laypage-btn")[0].click();
-                        layer.msg(data.wrkNo + res.msg);
-                    })
-                    layer.closeAll();
-                });
+                if (data.pdcType === "Y") {
+                    layer.confirm('褰撳墠浠诲姟鍏宠仈ERP閿�鍞崟锛屽彇娑堝皢閲嶆柊鐢熸垚鍑哄簱浣滀笟锛屾槸鍚︾户缁紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
+                        http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
+                            $(".layui-laypage-btn")[0].click();
+                            layer.msg(data.wrkNo + res.msg);
+                        })
+                        layer.closeAll();
+                    });
+                } else {
+                    layer.confirm('纭鍙栨秷璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
+                        http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
+                            $(".layui-laypage-btn")[0].click();
+                            layer.msg(data.wrkNo + res.msg);
+                        })
+                        layer.closeAll();
+                    });
+                }
+
                 break;
             //  鎷f枡鍏ュ簱
             case 'pick':

--
Gitblit v1.9.1