From d7f0b77a81c6c6f8895af082214edcbed29e3ab9 Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期一, 06 十一月 2023 16:27:04 +0800
Subject: [PATCH] feat: 调拨调整

---
 consum-base/src/main/java/com/consum/base/service/LGoodsWhRecordServiceImpl.java      |    2 
 consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordServiceImpl.java    |   41 ++++++++
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java     |  114 +++++++++++++++++-----
 consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java    |   53 ++++++++++
 consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserServiceImpl.java |   16 +++
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java       |    6 
 consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java                |   22 ++-
 7 files changed, 209 insertions(+), 45 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
index 4738495..ea5841e 100644
--- a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
@@ -1,25 +1,35 @@
 package com.consum.base.service;
 
+import com.consum.base.core.util.LockManage;
+import com.consum.model.po.LGoodsUserRecord;
+import com.consum.model.po.LWhFormTransfer;
 import com.consum.model.po.LWhProcureModelUser;
 import com.consum.model.po.LWhProcureModelUserRecord;
+import com.walker.infrastructure.utils.NumberGenerator;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
  * @ClassName LGoodsUserRecordCoreService
-
  * @Date 2023/11/2
  * @Description
  * @Version 1.0
  **/
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class LGoodsUserRecordCoreService {
     @Resource
     private GoodsBaseServiceImpl goodsBaseService;
-
+    @Resource
+    private LWhGoodsService lWhGoodsService;
+    @Resource
+    private LGoodsUserRecordServiceImpl lGoodsUserRecordService;
 
     /**
      * 閫氳繃鏂版棫 鐗╁搧浣跨敤浜轰慨鏀硅褰曘�怢_WH_PROCURE_MODEL_USER_RECORD銆戜腑鐨処D 锛� 鏉ヤ慨鏀圭墿鍝佷娇鐢ㄤ汉
@@ -38,14 +48,51 @@
         String operatorName = lWhProcureModelUserRecord.getOperatorName();
         // 璋冩嫧鍗昳d
         Long transBusinessId = lWhProcureModelUserRecord.getTransBusinessId();
+
+        LWhFormTransfer whFormTransfer = goodsBaseService.get(new LWhFormTransfer(transBusinessId));
+        Integer inWarehouseType = whFormTransfer.getInWarehouseType();
+        Long inWarehouseId = whFormTransfer.getInWarehouseId();
+        // 灏嗘墍鏈夌墿鍝佽缃负鏈垎鍙�
+        List<Long> srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId, transBusinessId, null, null, null, null);
+        lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, (short) 3);
+        // 璁剧疆鏃х殑LAST_RECORD= 0
+        lGoodsUserRecordService.updSetNotLast(srappedGoodsIds);
+        //鎻掑叆鏂扮殑
         LWhProcureModelUser modelUser = new LWhProcureModelUser();
         modelUser.setProcureModelUserRecordId(newProcureModelUserRecordId);
         List<LWhProcureModelUser> modelUserList = goodsBaseService.select(modelUser);
         if (CollectionUtils.isEmpty(modelUserList)) {
             return true;
         }
+        ArrayList<LGoodsUserRecord> goodsUserRecords = new ArrayList<>();
         for (LWhProcureModelUser lWhProcureModelUser : modelUserList) {
-
+            Long baseGoodsModelsId = lWhProcureModelUser.getBaseGoodsModelsId();
+            Integer goodsNum = lWhProcureModelUser.getGoodsNum();
+            //閫氳繃LockManage鑾峰緱閿�
+            Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId);
+            synchronized (warehouseModelLockObj) {
+                List<Long> toUserGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId, transBusinessId, null, baseGoodsModelsId, (short) 1, goodsNum);
+                if (CollectionUtils.isEmpty(toUserGoodsIds)) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    throw new RuntimeException("鎿嶄綔澶辫触!鍨嬪彿鏁伴噺涓嶈冻");
+                }
+                for (Long toUserGoodsId : toUserGoodsIds) {
+                    LGoodsUserRecord tmp = new LGoodsUserRecord();
+                    tmp.setId(NumberGenerator.getLongSequenceNumber());
+                    tmp.setWhGoodsId(toUserGoodsId);
+                    tmp.setRecordType(1);
+                    tmp.setTransBusinessId(transBusinessId);
+                    tmp.setNowUserName(lWhProcureModelUser.getNowUserName());
+                    tmp.setNowUserPhone(lWhProcureModelUser.getNowUserPhone());
+                    tmp.setOperatorId(operatorId);
+                    tmp.setOperatorName(operatorName);
+                    tmp.setDealTime(dealTime);
+                    tmp.setLastRecord(1);
+                    goodsUserRecords.add(tmp);
+                }
+                lWhGoodsService.modGoodsTransfering(toUserGoodsIds, null, null, null, (short) 2);
+                lGoodsUserRecordService.insertBatch(goodsUserRecords);
+            }
         }
         return true;
     }
diff --git a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordServiceImpl.java
index 6535954..bfa9cca 100644
--- a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordServiceImpl.java
@@ -2,15 +2,54 @@
 
 import com.walker.jdbc.service.BaseServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @ClassName LGoodsUserRecordServiceImpl
-
  * @Date 2023/11/2
  * @Description
  * @Version 1.0
  **/
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class LGoodsUserRecordServiceImpl extends BaseServiceImpl {
 
+
+    /**
+     * 璁剧疆涓洪潪鏈�鏂�
+     */
+    private static String updSetNotLast = "update L_GOODS_USER_RECORD set LAST_RECORD = 0 where WH_GOODS_ID in(?) and LAST_RECORD=1";
+
+    public int updSetNotLast(List<Long> outGoodsIds) {
+        ArrayList<Object> params = new ArrayList<>();
+        params.add(outGoodsIds);
+        return this.update(updSetNotLast, params.toArray());
+    }
+
+    /**
+     * 閫氳繃 璋冩嫧鍗旾D 鎴栬�� 鍒嗗彂璁板綍琛╥d 鍒犻櫎
+     */
+    private static String DEL_BY_TRANDS_AND_RECORDID = "delete from L_GOODS_USER_RECORD where 1=1";
+
+    public int delByTrandsAndRecordId(Long transBusinessId, Long procureModelUserRecordId) {
+        if (transBusinessId == null && procureModelUserRecordId == null) {
+            return 0;
+        }
+        ArrayList<Object> params = new ArrayList<>();
+        StringBuilder sql = new StringBuilder(DEL_BY_TRANDS_AND_RECORDID);
+        if (transBusinessId != null) {
+            sql.append(" and TRANS_BUSINESS_ID =?");
+            params.add(transBusinessId);
+        }
+        if (procureModelUserRecordId != null) {
+            sql.append(" and PROCURE_MODEL_USER_RECORD_ID =?");
+            params.add(procureModelUserRecordId);
+        }
+        return update(sql.toString(), params.toArray());
+    }
+
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LGoodsWhRecordServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LGoodsWhRecordServiceImpl.java
index 43af8e3..3a20477 100644
--- a/consum-base/src/main/java/com/consum/base/service/LGoodsWhRecordServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LGoodsWhRecordServiceImpl.java
@@ -31,7 +31,7 @@
     /**
      * 璁剧疆涓洪潪鏈�鏂�
      */
-    private static String updSetNotLast = "update L_GOODS_WH_RECORD set LAST_RECORD = 0 where WH_GOODS_ID in(?)";
+    private static String updSetNotLast = "update L_GOODS_WH_RECORD set LAST_RECORD = 0 where WH_GOODS_ID in(?) and LAST_RECORD=1";
 
     public int updSetNotLast(List<Long> outGoodsIds) {
         ArrayList<Object> params = new ArrayList<>();
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
index 4a4a7e9..3e32a02 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -20,7 +20,6 @@
 
 /**
  * @ClassName WhFormOutputCoreService
-
  * @Date 2023/10/26
  * @Description
  * @Version 1.0
@@ -166,6 +165,9 @@
         Integer outWarehouseType = lWhFormOutput.getOutWarehouseType();
         Long outWarehouseId = lWhFormOutput.getWarehouseId();
         String warehouseName = lWhFormOutput.getWarehouseName();
+        Integer inWarehouseType = lWhFormOutput.getInWarehouseType();
+        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
+        String inWarehouseName = lWhFormOutput.getInWarehouseName();
 
         Long userId = currentUser.getId();
         String nickName = currentUser.getNick_name();
@@ -251,7 +253,7 @@
 
                 //鍑哄簱鏃跺�欙紝鎸� 鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
                 List<Long> outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, goodsModelNum);
-                lWhGoodsService.modGoodsTransfering(outGoodsId, null, null, null, modGoodsTransferingStatus);
+                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
                 // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
                 lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
                 lWhGoodsRecordService.insert(whGoodsRecord);
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
index 983c870..75e2dd2 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
@@ -1,10 +1,7 @@
 package com.consum.base.service;
 
 import com.consum.base.core.util.LockManage;
-import com.consum.model.po.LWarehouseFlow;
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.LWhGoodsRecord;
-import com.consum.model.po.LWhGoodsRecordDetails;
+import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
@@ -12,8 +9,10 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -43,8 +42,10 @@
     private LGoodsWhRecordServiceImpl lGoodsWhRecordService;
     @Resource
     private LWarehouseFlowService lWarehouseFlowService;
-//    @Resource
-//    private LWarehouseFlowService LWhGoodsRecordDetailsService;
+    @Resource
+    private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
+    @Resource
+    private LGoodsUserRecordServiceImpl lGoodsUserRecordService;
 
 
     /**
@@ -116,8 +117,20 @@
 
         // 娴佹按璁板綍鎬昏〃ID
         long inWarehouseFlowId = NumberGenerator.getLongSequenceNumber();
-        // 鏍规嵁鍑哄簱娴佹按ID 鏌ヨ 鍑哄簱鐨勭墿鍝両D
-        List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId);
+        //鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��
+        Integer businessType = lWhFormTransfer.getBusinessType();
+        //鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
+        short goodsStatus = 1;
+        //绫诲瀷0鍒嗗彂浣跨敤1 鍙嶅簱
+        Integer recordType = null;
+        if (businessType == 1) {
+            goodsStatus = 2;
+            recordType = 0;
+
+        } else if (businessType == 2) {
+            goodsStatus = 1;
+            recordType = 1;
+        }
 
         // 鎻掑叆 杩涘嚭搴撴祦姘存�昏〃[L_WAREHOUSE_FLOW]
         LWarehouseFlow inwarehouseFlow = new LWarehouseFlow();
@@ -146,6 +159,59 @@
             //閫氳繃LockManage鑾峰緱閿�
             Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId);
             synchronized (warehouseModelLockObj) {
+                // 鏍规嵁鍑哄簱娴佹按ID 鏌ヨ 鍑哄簱鐨勭墿鍝両D
+                List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId);
+                // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1
+                lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, goodsStatus);
+                //姝ゆ椂瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆戞坊鍔犳暟鎹�
+                //鏌ヨ閮ㄩ棬鍒嗗彂浣跨敤浜�
+                LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
+                lWhProcureModelUser.setTransBusinessId(whFormTransferId);
+                lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId);
+                List<LWhProcureModelUser> goodsUserInfo = goodsBaseService.select(lWhProcureModelUser);
+                int totalGoodsNum = goodsUserInfo.stream().mapToInt(LWhProcureModelUser::getGoodsNum).sum();
+                if (totalGoodsNum != outGoodsIds.size()) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    throw new RuntimeException("鍏ュ簱鍗曞け璐ワ紝浣跨敤浜轰娇鐢ㄦ暟閲忎笌鐗╁搧鏁伴噺涓嶄竴鑷�");
+//                        log.error("鍒涘缓鍏ュ簱鍗曞け璐�");
+                }
+                //灏嗙墿鍝佸瀷鍙蜂互鍓嶇殑浣跨敤璁板綍璁剧疆涓洪潪鏈�鏂�
+                lGoodsUserRecordService.updSetNotLast(outGoodsIds);
+                ArrayList<LGoodsUserRecord> goodsUserRecordList = new ArrayList<>();
+                int startIndex = 0;
+                for (LWhProcureModelUser whProcureModelUser : goodsUserInfo) {
+                    Integer goodsNum = whProcureModelUser.getGoodsNum();
+                    String nowUserName = whProcureModelUser.getNowUserName();
+                    Long nowUserPhone = whProcureModelUser.getNowUserPhone();
+                    Long procureModelUserRecordId = whProcureModelUser.getProcureModelUserRecordId();
+                    List<Long> goodsIds = outGoodsIds.subList(startIndex, startIndex + goodsNum);
+                    for (Long goodsId : goodsIds) {
+                        LGoodsUserRecord tmp = new LGoodsUserRecord();
+                        tmp.setWhGoodsId(goodsId);
+                        tmp.setRecordType(recordType);
+                        tmp.setTransBusinessId(whFormTransferId);
+                        if (businessType == 1) {
+                            tmp.setNowUserName(nowUserName);
+                            tmp.setNowUserPhone(nowUserPhone);
+                        } else if (businessType == 2) {
+                            tmp.setNowUserName(null);
+                            tmp.setNowUserPhone(null);
+                        }
+                        tmp.setProcureModelUserRecordId(procureModelUserRecordId);
+                        tmp.setOperatorId(userId);
+                        tmp.setOperatorName(nickName);
+                        tmp.setDealTime(dealTime);
+                        tmp.setLastRecord(1);
+                        goodsUserRecordList.add(tmp);
+                    }
+                    // 鏇存柊涓嬫爣浣嶇疆
+                    startIndex += goodsNum;
+                }
+                //鎵归噺鎻掑叆浣跨敤浜鸿褰�
+                lGoodsUserRecordService.insertBatch(goodsUserRecordList);
+                //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆�
+                lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime);
+
                 // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺
                 int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, (short) 1, null);
                 whGoodsRecord.setInitialCount(goodsModelNum);
@@ -153,30 +219,14 @@
             }
             LWhGoodsRecordDetails lWhGoodsRecordDetails = new LWhGoodsRecordDetails();
             lWhGoodsRecordDetails.setWhGoodsRecordId(oldRecordId);
-            List<LWhGoodsRecordDetails> goodsRecordDetailsList = null;// LWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails);
+            List<LWhGoodsRecordDetails> goodsRecordDetailsList = lWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails);
             for (LWhGoodsRecordDetails whGoodsRecordDetails : goodsRecordDetailsList) {
                 whGoodsRecordDetails.setId(NumberGenerator.getLongSequenceNumber());
                 whGoodsRecordDetails.setThisType(1);
             }
-//            LWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList);
+            lWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList);
         }
         lWhGoodsRecordService.insertBatch(whGoodsRecordList);
-
-        // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1
-        lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, (short) 1);
-        //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆�
-        lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime);
-
-        //鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��
-        Integer businessType = lWhFormTransfer.getBusinessType();
-        if (businessType == 1) {
-            // 闇�瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆� 澧炲姞璁板綍
-
-        } else if (businessType == 2) {
-            // 闇�瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆� 澧炲姞璁板綍
-
-        }
-
 
         // 鏇存柊璋冩嫧鍗�
         lWhFormTransfer = new LWhFormTransfer(whFormTransferId);
@@ -198,11 +248,17 @@
      *
      * @param lWarehouseFlowId
      */
-    private List<Long> getGoodsidByFlowId(long lWarehouseFlowId) {
+    private List<Long> getGoodsidByFlowId(Long lWarehouseFlowId, Long whGoodsRecordId) {
         StringBuilder sql = new StringBuilder(GET_GOODSID_BY_FLOWID);
         Map<String, Object> paramts = new HashMap<>();
-        sql.append(" and gr.WAREHOUSE_FLOW_ID =:lWarehouseFlowId");
-        paramts.put("lWarehouseFlowId", lWarehouseFlowId);
+        if (lWarehouseFlowId != null) {
+            sql.append(" and gr.WAREHOUSE_FLOW_ID =:lWarehouseFlowId");
+            paramts.put("lWarehouseFlowId", lWarehouseFlowId);
+        }
+        if (whGoodsRecordId != null) {
+            sql.append(" and gr.id =:whGoodsRecordId");
+            paramts.put("whGoodsRecordId", whGoodsRecordId);
+        }
         List<Map<String, Object>> outGoods = goodsBaseService.select(sql.toString(), paramts);
         if (CollectionUtils.isEmpty(outGoods)) {
             return null;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
index 2030a00..ea3b9ea 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
@@ -13,7 +13,6 @@
 
 /**
  * @ClassName LWhGoodsService
-
  * @Date 2023/10/24
  * @Description
  * @Version 1.0
@@ -132,7 +131,9 @@
      * @param goodsModelNum     鍙栧嚭鐨勬暟閲�
      * @return
      */
-    private static String QUERY_SCRAPPED_GOODS_PREFIX = "SELECT goods.id FROM L_WH_GOODS goods LEFT JOIN (SELECT t2.*FROM (SELECT max(DEAL_TIME) DEAL_TIME,WH_GOODS_ID FROM L_GOODS_USER_RECORD GROUP BY WH_GOODS_ID) t1 LEFT JOIN L_GOODS_USER_RECORD t2 ON t1.DEAL_TIME=t2.DEAL_TIME AND t1.WH_GOODS_ID=t2.WH_GOODS_ID) useRecord ON goods.id=useRecord.WH_GOODS_ID WHERE 1=1";
+
+    private static String QUERY_SCRAPPED_GOODS_PREFIX_1 = "SELECT goods.id FROM L_WH_GOODS goods LEFT JOIN L_GOODS_USER_RECORD useRecord ON goods.id=useRecord.WH_GOODS_ID AND useRecord.LAST_RECORD=1 WHERE 1=1 ";
+    private static String QUERY_SCRAPPED_GOODS_PREFIX_2 = " AND goods.id IN (SELECT lwgrd.WH_GOODS_ID FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD lwgr ON lwgr.WAREHOUSE_FLOW_ID=flow.id LEFT JOIN L_WH_GOODS_RECORD_DETAILS lwgrd ON lwgrd.WH_GOODS_RECORD_ID=lwgr.id WHERE flow.THIS_TYPE=4 AND flow.BUSINESS_FORM_ID=:transBusinessId)";
     private static String QUERY_SCRAPPED_GOODS_END = " ORDER BY goods.PRICE DESC,goods.PROCURE_DATE ASC,goods.id";
 
     public List<Map<String, Object>> queryScrappedGoods(Integer warehouseType,
@@ -145,7 +146,7 @@
         if (warehouseType == null) {
             warehouseType = 0;
         }
-        StringBuilder sql = new StringBuilder(QUERY_SCRAPPED_GOODS_PREFIX);
+        StringBuilder sql = new StringBuilder(QUERY_SCRAPPED_GOODS_PREFIX_1);
         Map<String, Object> paramts = new HashMap<>();
         if (warehouseType != null) {
             sql.append(" AND goods.WAREHOUSE_TYPE=:warehouseType");
@@ -154,10 +155,6 @@
         if (warehouseId != null) {
             sql.append(" AND goods.WAREHOUSE_ID=:warehouseId");
             paramts.put("warehouseId", warehouseId);
-        }
-        if (transBusinessId != null) {
-            sql.append(" and useRecord.TRANS_BUSINESS_ID=:transBusinessId");
-            paramts.put("transBusinessId", transBusinessId);
         }
         if (StringUtils.isNotEmpty(nowUserName)) {
             sql.append(" AND useRecord.NOW_USER_NAME=:nowUserName");
@@ -171,7 +168,15 @@
             sql.append(" AND goods.STATES=:states");
             paramts.put("states", states);
         }
-        return select(sql.append(QUERY_SCRAPPED_GOODS_END).append(" limit").append(goodsModelNum).toString(), paramts);
+        if (transBusinessId != null) {
+            sql.append(QUERY_SCRAPPED_GOODS_PREFIX_2);
+            paramts.put("transBusinessId", transBusinessId);
+        }
+        sql.append(QUERY_SCRAPPED_GOODS_END);
+        if (goodsModelNum != null) {
+            sql.append(" limit").append(goodsModelNum);
+        }
+        return select(sql.toString(), paramts);
     }
 
     /**
@@ -237,6 +242,5 @@
         params.add(whGoods);
         return update(sql.toString(), params.toArray());
     }
-
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserServiceImpl.java
new file mode 100644
index 0000000..db79911
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserServiceImpl.java
@@ -0,0 +1,16 @@
+package com.consum.base.service;
+
+import com.walker.jdbc.service.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @ClassName LWhProcureModelUserServiceImpl
+ * @Author cy
+ * @Date 2023/11/3
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhProcureModelUserServiceImpl extends BaseServiceImpl {
+
+}

--
Gitblit v1.9.1