From 80b1853f245bf67e0145551c34915610c3438203 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期五, 15 四月 2022 13:58:45 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/WrkDetlMapper.xml                    |   30 +++++++++++++++
 src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java            |    5 ++
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java    |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    2 
 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java |    9 ++++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java  |   60 ++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/WrkDetlService.java          |    2 +
 7 files changed, 108 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
index e4c0ff5..98e2931 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.zy.asrs.entity.WrkDetl;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -13,4 +14,8 @@
 
     List<WrkDetl> selectByWrkNo(Integer wrkNo);
 
+    int deleteItem(@Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch);
+
+    int updateAnfme(@Param("anfme")Double anfme, @Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java
index 7b92036..bec23ae 100644
--- a/src/main/java/com/zy/asrs/service/WrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -12,4 +12,6 @@
 
     List<WrkDetl> selectByWrkNo(Integer wrkNo);
 
+    boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index e81a47d..0bc78c0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -16,6 +16,7 @@
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -146,6 +147,7 @@
     }
 
     @Override
+    @Transactional
     public void adjust(MobileAdjustParam param, Long userId) {
         BasDevp basDevp = basDevpService.selectById(param.getStaNo());
         if (null == basDevp || basDevp.getWrkNo() == null) {
@@ -158,9 +160,67 @@
         if (wrkMast.getWrkSts() < 10) {
             throw new CoolException("鐩樼偣鏃犳晥锛屼换鍔″凡鐩樼偣鍐嶅叆搴�");
         }
+        Date now = new Date();
         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
 
+        List<WrkDetl> list = param.getWrkDetls();
 
+        // 淇敼鏁伴噺
+        Iterator<WrkDetl> iterator = wrkDetls.iterator();
+        while (iterator.hasNext()) {
+            WrkDetl wrkDetl = iterator.next();
+            Iterator<WrkDetl> iterator1 = list.iterator();
+            while (iterator1.hasNext()) {
+                WrkDetl wrkDetl1 = iterator1.next();
+                if (wrkDetl1.getAnfme() == 0) {
+                    iterator1.remove();
+                }
+                if (wrkDetl.getMatnr().equals(wrkDetl1.getMatnr()) && Cools.eq(wrkDetl.getBatch(), wrkDetl1.getBatch())) {
+                    if (!wrkDetl.getAnfme().equals(wrkDetl1.getAnfme())) {
+                        // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+                        // 淇敼鏄庣粏
+                        if (!wrkDetlService.updateAnfme(wrkDetl1.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+                            throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+                        }
+                    }
+                    iterator.remove();
+                    iterator1.remove();
+                }
+            }
+        }
+
+        // 鍒犻櫎鏄庣粏
+        for (WrkDetl wrkDetl : wrkDetls) {
+            // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+            if (!wrkDetlService.updateAnfme(-1.0D, wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+                throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+            }
+        }
+
+        // 娣诲姞鏄庣粏
+        for (WrkDetl wrkDetl : list) {
+            if (wrkDetl.getAnfme() == 0.0D) { continue; }
+            // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+            String orderNo = wrkDetl.getOrderNo();
+            Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+            wrkDetl.sync(mat);
+            wrkDetl.setOrderNo(orderNo);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(userId);
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(userId);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+            }
+        }
+
+        // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
+        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0?"Y":"N");
+        wrkMast.setModiTime(now);
+        wrkMast.setModiUser(userId);
+        if (!wrkMastService.updateById(wrkMast)) {
+            throw new CoolException("淇敼鐩樼偣浠诲姟涓绘。澶辫触");
+        }
 
     }
 
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 b051cbf..671ec8c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -663,7 +663,7 @@
             locDetl.setAppeUser(userId);
             locDetl.setAppeTime(now);
             if (!locDetlService.insert(locDetl)) {
-                throw new CoolException("淇濆瓨搴撳瓨鏄庣粏澶辫触");
+                throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
             }
             // 淇濆瓨璋冩暣璁板綍
             AdjDetl adjDetl = new AdjDetl();
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 61b9883..263ee27 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -56,4 +56,13 @@
     public List<WrkDetl> selectByWrkNo(Integer wrkNo) {
         return this.baseMapper.selectByWrkNo(wrkNo);
     }
+
+    @Override
+    public boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch) {
+        if (anfme <= 0) {
+            return this.baseMapper.deleteItem(wrkNo, matnr, batch) > 0;
+        } else {
+            return baseMapper.updateAnfme(anfme, wrkNo, matnr, batch) > 0;
+        }
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 0016f8a..4f9e757 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -204,7 +204,7 @@
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
-                        locMast.setLocSts("F");
+                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y")?"F":"D");
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index f369802..89bb3e1 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -47,8 +47,38 @@
         <result column="memo" property="memo" />
     </resultMap>
 
+    <sql id="batchSeq">
+        <choose>
+            <when test="batch != null and batch != ''">
+                and batch = #{batch}
+            </when>
+            <otherwise>
+                and (batch IS NULL OR batch = '')
+            </otherwise>
+        </choose>
+    </sql>
+
+
     <select id="selectByWrkNo" resultMap="BaseResultMap">
         select * from asr_wrk_detl where 1=1 and wrk_no = #{wrkNo}
     </select>
 
+    <delete id="deleteItem">
+        delete from asr_wrk_detl
+        where 1=1
+        and wrk_no = #{wrkNo}
+        and matnr = #{matnr}
+        <include refid="batchSeq"></include>
+    </delete>
+
+    <update id="updateAnfme">
+        update asr_wrk_detl
+        set anfme = #{anfme}
+        , modi_time = getdate()
+        where 1=1
+        and wrk_no = #{wrkNo}
+        and matnr = #{matnr}
+        <include refid="batchSeq"></include>
+    </update>
+
 </mapper>

--
Gitblit v1.9.1