From 69abbfbdbda77af152490e47851622905df7eb8e Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期六, 02 十二月 2023 20:35:52 +0800
Subject: [PATCH] feat: 部门物品回退

---
 consum-base/src/main/java/com/consum/base/controller/UsingFormBackController.java    |    2 
 consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java   |    2 
 consum-base/src/main/java/com/consum/base/service/UsingFormBackService.java          |    3 
 consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java                 |    2 
 consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java |   41 ++---
 consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java  |  338 ++++++++++++++++++++++++++++++++++++++++++++++++
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java     |    4 
 7 files changed, 360 insertions(+), 32 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/UsingFormBackController.java b/consum-base/src/main/java/com/consum/base/controller/UsingFormBackController.java
index 259a48d..a2fe8e1 100644
--- a/consum-base/src/main/java/com/consum/base/controller/UsingFormBackController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/UsingFormBackController.java
@@ -40,7 +40,7 @@
         if (sysInfo == null) {
             return ResponseValue.error("璇峰厛鐧诲綍");
         }
-        usingFormBackService.add(usingFormBackParam, sysInfo);
+        usingFormBackService.add(usingFormBackParam, sysInfo,this.getCurrentUser());
         return ResponseValue.success();
     }
 
diff --git a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
index 1a2d47f..2316f69 100644
--- a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
@@ -114,7 +114,7 @@
             Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
             int goodsModelNum = 0;
             synchronized (warehouseModelLockObj) {
-                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, null);
+                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 2, null);
                 for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
                     // 璋冩嫧鍗曚俊鎭�
                     Long transBusinessId = (Long) depFormScrappedModel.get("TRANS_BUSINESS_ID");
diff --git a/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
new file mode 100644
index 0000000..171a064
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
@@ -0,0 +1,338 @@
+package com.consum.base.core;
+
+import cn.hutool.core.convert.Convert;
+import com.consum.base.core.service.LWhWarningCoreServiceImpl;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
+import com.consum.base.service.*;
+import com.consum.model.po.*;
+import com.iplatform.model.po.S_user_core;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.web.ResponseValue;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+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;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName DepFormScrappedCoreServiceImpl
+ * @Author cy
+ * @Date 2023/12/2
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+@Slf4j
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+public class DepUsingFormBackCoreServiceImpl {
+    @Resource
+    private GoodsBaseServiceImpl goodsBaseService;
+    @Resource
+    private LWhGoodsService lWhGoodsService;
+    @Resource
+    private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
+    @Resource
+    private LWhGoodsRecordService lWhGoodsRecordService;
+    @Resource
+    private LWarehouseFlowService lWarehouseFlowService;
+    @Resource
+    private LWhWarningCoreServiceImpl lWhWarningCoreService;
+
+    /**
+     * 鏍规嵁鎶ュ簾鍗曟姤搴燂細淇敼璋冩嫧鍗曚腑鍙��鍥炴暟閲忥紱浠撳簱涓墿鍝佺姸鎬佽缃负鎶ュ簾;鐢熸垚涓�涓繚璐规祦姘达紱鏇存柊鎶ュ簾鍨嬪彿琛ㄤ腑锛岀墿鍝佷环鍊�
+     * <p>
+     * 1.鎵惧埌闇�瑕侀��鍥炵殑鍨嬪彿锛� 鎸夊悓涓�涓�
+     *
+     * @param lWhFormBackId
+     */
+    public ResponseValue updateBack(Long lWhFormBackId, S_user_core currentUser, Long dealTime) {
+        // 鏌ヨ鎶ュ簾鍗曠姸鎬�
+        UsingFormBack depFormScrapped = new UsingFormBack(lWhFormBackId);
+        depFormScrapped = goodsBaseService.get(depFormScrapped);
+        //鐘舵�� 1=寰呮姤搴燂紱2=宸叉姤搴�
+        if (depFormScrapped == null || depFormScrapped.getStates() != 1) {
+            return ResponseValue.error("璇锋鏌ユ姤搴熷崟");
+        }
+
+        Long userId = currentUser.getId();
+        String nickName = currentUser.getNick_name();
+
+        // 鏍规嵁鎶ュ簾鍗� 鏌ヨ闇�瑕佹姤搴熺殑鍨嬪彿鏁伴噺
+        List<Map<String, Object>> bfModelList = goodsBaseService.select("SELECT scrGoods.TRANS_OUT_WAREHOUSE_TYPE,scrGoods.TRANS_OUT_WAREHOUSE_ID,scrGoods.TRANS_BUSINESS_ID,scrGoods.BUSINESS_FORM_CODE,scrGoods.TRANS_OUT_WAREHOUSE_TYPE,scrGoods.TRANS_OUT_WAREHOUSE_ID,scrGoods.BASE_GOODS_TEMPLATE_ID,scrGoods.BASE_GOODS_TEMPLATE_NAME,goodsModel.id formScrappedModelId,goodsModel.BASE_GOODS_TEMPLATE_ID,goodsModel.BASE_GOODS_MODELS_ID,goodsModel.COUNTS,goodsModel.PROCURE_MODEL_USER_ID,goodsModel.GOODS_USER_NAME,goodsModel.BASE_GOODS_MODELS_NAME FROM USING_FORM_BACK_GOODS scrGoods LEFT JOIN USING_FORM_BACK_MODEL goodsModel ON scrgoods.id=goodsModel.USING_FORM_BACK_GOODS_ID WHERE scrGoods.USING_FORM_BACK_ID=?", new Object[]{lWhFormBackId});
+        Map<Object, List<Map<String, Object>>> groupByModelIdMap = bfModelList.stream()
+                .collect(Collectors.groupingBy(map -> map.get("BASE_GOODS_MODELS_ID")));
+        Integer warehouseType = depFormScrapped.getOutWarehouseType();
+        Long warehouseId = depFormScrapped.getOutWarehouseId();
+        String warehouseName = depFormScrapped.getOutWarehouseName();
+
+        // 娴佹按璁板綍鎬昏〃ID
+        long lWarehouseFlowId = IdUtil.generateId();
+
+        // 鏇存柊 鎶ュ簾鍗曠墿鍝併�怐EP_FORM_SCRAPPED_MODEL銆戜腑浠锋牸鐨刲ist
+        Map<Long, Long> modelTotalPriceMap = new HashMap<>();
+
+        ArrayList<LWhGoodsRecord> lWhGoodsRecordList = new ArrayList<>();
+
+        //閲囪喘銆佽皟鎷ㄣ�佸嚭搴撶瓑鐨勭墿鍝佸瀷鍙枫�怢_WH_PROCURE_MODEL銆戜腑 鏍规嵁璋冩嫧鍗�+鍨嬪彿 鏇存柊 鍦ㄧ敤鏁伴噺
+        Map<String, Integer> procureModelMap = new HashMap<>();
+
+        for (Object key : groupByModelIdMap.keySet()) {
+            Long modelTotalPrice = 0l;
+            //瑕佹姤搴熺殑鎬绘暟閲�
+            int modelTotalNum = 0;
+
+            Long baseGoodsModelsId = (Long) key;
+            List<Map<String, Object>> eachFfModelList = groupByModelIdMap.get(key);
+            Map<String, Object> eachFfModelBase = eachFfModelList.get(0);
+            Long tempGoodsId = Convert.toLong(eachFfModelBase.get("BASE_GOODS_TEMPLATE_ID"));
+            String goodsName = Convert.toStr(eachFfModelBase.get("BASE_GOODS_TEMPLATE_NAME"));
+            String modelName = Convert.toStr(eachFfModelBase.get("BASE_GOODS_MODELS_NAME"));
+
+            // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
+            long whGoodsRecordId = IdUtil.generateId();
+            LWhGoodsRecord whGoodsRecord = new LWhGoodsRecord();
+            whGoodsRecord.setId(whGoodsRecordId);
+            whGoodsRecord.setWarehouseType(warehouseType);
+            whGoodsRecord.setWarehouseId(warehouseId);
+            whGoodsRecord.setWarehouseFlowId(lWarehouseFlowId);
+            whGoodsRecord.setBaseGoodsTemplateId(tempGoodsId);
+            whGoodsRecord.setGoodsTemplateName(goodsName);
+            whGoodsRecord.setBaseGoodsModelsId(baseGoodsModelsId);
+            whGoodsRecord.setBaseGoodsModelsName(modelName);
+            whGoodsRecord.setDealTime(dealTime);
+            //鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
+            whGoodsRecord.setThisType(2);
+
+            //閫氳繃LockManage鑾峰緱閿�
+            Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
+            int goodsModelNum = 0;
+            synchronized (warehouseModelLockObj) {
+                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 2, null);
+                for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
+                    // 璋冩嫧鍗曚俊鎭�
+                    Long transBusinessId = (Long) depFormScrappedModel.get("TRANS_BUSINESS_ID");
+                    String nowUserName = Convert.toStr(depFormScrappedModel.get("GOODS_USER_NAME"));
+                    Integer counts = Convert.toInt(depFormScrappedModel.get("COUNTS"));
+                    Long formScrappedModelId = Convert.toLong(depFormScrappedModel.get("formScrappedModelId"));
+
+                    modelTotalNum += counts;
+
+                    // 鏍规嵁鍒嗗彂鍗曘�佸瀷鍙枫�佷娇鐢ㄤ汉淇℃伅鏌ヨ鐗╁搧淇℃伅
+                    List<Map<String, Object>> scrappedGoodsList = lWhGoodsService.queryScrappedGoods(warehouseType, warehouseId, transBusinessId, nowUserName, baseGoodsModelsId, (short) 2, counts);
+                    if (CollectionUtils.isEmpty(scrappedGoodsList) || scrappedGoodsList.size() < counts) {
+                        log.error("瑕佹姤搴熺殑鐗╁搧鏁伴噺涓嶈冻锛�");
+                        // 鎵嬪姩鍥炴粴
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        throw new RuntimeException("鎶ュ簾澶辫触!鍨嬪彿鏁伴噺涓嶈冻");
+                    }
+                    // 鏀惧叆鐗╁搧ID绛変俊鎭�
+                    depFormScrappedModel.put("scrappedGoodsList", scrappedGoodsList);
+
+                    Long formScrappedModelPrice = scrappedGoodsList.stream().mapToLong(map -> (long) map.get("price")).sum();
+                    modelTotalPrice += formScrappedModelPrice;
+                    // 鏇存柊 鎶ュ簾鍗曠墿鍝併�怐EP_FORM_SCRAPPED_MODEL銆戜腑 浠锋牸
+                    modelTotalPriceMap.put(formScrappedModelId, formScrappedModelPrice);
+                    //閲囪喘銆佽皟鎷ㄣ�佸嚭搴撶瓑鐨勭墿鍝佸瀷鍙枫�怢_WH_PROCURE_MODEL銆戜腑 鍦ㄧ敤鏁伴噺
+                    Integer procureModelNum = Convert.toInt(procureModelMap.get(transBusinessId + "_" + baseGoodsModelsId), 0);
+                    procureModelMap.put(transBusinessId + "_" + baseGoodsModelsId, counts + procureModelNum);
+
+                    // 姹囨�诲嚭闇�瑕佷慨鏀圭姸鎬佺殑鐗╁搧id
+                    List<Long> srappedGoodsIds = scrappedGoodsList.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList());
+
+                    // 璁剧疆鐗╁搧涓烘姤搴熺姸鎬�
+//                    lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, 3);
+                    // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
+                    lWhGoodsRecordDetailsService.sameGoodsInsertMore(srappedGoodsIds, whGoodsRecordId, (short) 2);
+                }
+            }
+
+            whGoodsRecord.setInitialCount(goodsModelNum);
+            whGoodsRecord.setEndCount(goodsModelNum - modelTotalNum);
+            whGoodsRecord.setThisCount(modelTotalNum);
+            whGoodsRecord.setTotalPrice(modelTotalPrice);
+//            lWhGoodsRecordService.insert(whGoodsRecord);
+            lWhGoodsRecordList.add(whGoodsRecord);
+        }
+
+        // 鎻掑叆鎬绘祦姘�
+        LWarehouseFlow warehouseFlow = new LWarehouseFlow();
+        warehouseFlow.setId(lWarehouseFlowId);
+        warehouseFlow.setWarehouseType(warehouseType);
+        warehouseFlow.setWarehouseId(warehouseId);
+        warehouseFlow.setWarehouseName(warehouseName);
+        warehouseFlow.setThisType(2);
+        warehouseFlow.setBusinessType(WhBusinessEnum.BAOFEI.getValue() + 0);
+        warehouseFlow.setBusinessFormId(lWhFormBackId);
+        warehouseFlow.setOperatorId(userId);
+        warehouseFlow.setOperatorName(nickName);
+        warehouseFlow.setDealTime(dealTime);
+        // 鎻掑叆娴佹按鎬昏〃
+        int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow);
+        if (flowInsertFlag == 0) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return null;
+        }
+        // 鎵归噺鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撱�怢_WH_GOODS_RECORD銆�
+        lWhGoodsRecordService.insertBatch(lWhGoodsRecordList);
+
+        // 鏇存柊鎶ュ簾鍗�
+        depFormScrapped = new UsingFormBack(lWhFormBackId);
+        depFormScrapped.setStates(2);
+        goodsBaseService.update(depFormScrapped);
+
+        // 鏇存柊 鎶ュ簾鍗曠墿鍝併�怐EP_FORM_SCRAPPED_MODEL銆戜腑浠锋牸鐨刲ist
+        List<Object[]> parameterList = new ArrayList<>();
+        for (Map.Entry<Long, Long> entry : modelTotalPriceMap.entrySet()) {
+            Long key = entry.getKey();
+            Long value = entry.getValue();
+            Object[] one = new Object[2];
+            one[0] = value;
+            one[1] = key;
+            parameterList.add(one);
+        }
+        goodsBaseService.execBatchUpdate("update DEP_FORM_SCRAPPED_MODEL set TOTAL_AMOUNT=? where id=?", parameterList);
+
+        //閲囪喘銆佽皟鎷ㄣ�佸嚭搴撶瓑鐨勭墿鍝佸瀷鍙枫�怢_WH_PROCURE_MODEL銆戜腑 鏍规嵁璋冩嫧鍗�+鍨嬪彿 鏇存柊 鍦ㄧ敤鏁伴噺
+        List<Object[]> procureModelParameterList = new ArrayList<>();
+        for (Map.Entry<String, Integer> entry : procureModelMap.entrySet()) {
+            String key = entry.getKey();
+            Integer modelUseingNum = entry.getValue();
+            String[] strings = key.split("_");
+            String transBusinessId = strings[0];
+            String baseGoodsModelsId = strings[1];
+            Object[] one = new Object[4];
+            one[0] = modelUseingNum;
+            one[1] = transBusinessId;
+            one[2] = baseGoodsModelsId;
+            one[3] = modelUseingNum;
+            procureModelParameterList.add(one);
+            StringBuilder sb = new StringBuilder("update L_WH_PROCURE_MODEL set USE_COUNT=USE_COUNT-");
+            sb.append(modelUseingNum).append(" where BUSINESS_TYPE=4 and BUSINESS_ID=");
+            sb.append(transBusinessId).append(" and BASE_GOODS_MODELS_ID=");
+            sb.append(baseGoodsModelsId).append(" and USE_COUNT-");
+            sb.append(modelUseingNum).append(" >=0");
+            goodsBaseService.update(sb.toString());
+        }
+//        goodsBaseService.execBatchUpdate("update L_WH_PROCURE_MODEL set USE_COUNT=USE_COUNT-? where BUSINESS_TYPE=4 and BUSINESS_ID=? and BASE_GOODS_MODELS_ID=? and USE_COUNT=USE_COUNT-? >0", parameterList);
+
+
+        // 鎿嶄綔鍏ュ簱锛屾鏃惰鎸夌墿鍝佹墍灞炰粨搴� 鐢熸垚涓嶅悓浠撳簱鍏ュ簱鐨勬祦姘�
+        Map<String, List<Map<String, Object>>> groupByOutWarehouseIdMap = bfModelList.stream()
+                .collect(Collectors.groupingBy(map -> map.get("TRANS_OUT_WAREHOUSE_TYPE") + "_" + map.get("TRANS_OUT_WAREHOUSE_ID")));
+        //姣忎釜浠撳簱涓�涓祦姘磋〃
+        ArrayList<LWarehouseFlow> flowArrayList = new ArrayList<>();
+        ArrayList<LWhGoodsRecord> flowRecordArrayList = new ArrayList<>();
+
+        for (String outWarehouseTypeAndId : groupByOutWarehouseIdMap.keySet()) {
+            List<Map<String, Object>> eachWareHouseList = groupByOutWarehouseIdMap.get(outWarehouseTypeAndId);
+            Map<String, Object> eachWarehouseModelMap = eachWareHouseList.get(0);
+
+//            Integer inWareHouseType = Convert.toInt(eachWarehouseModelMap.get("TRANS_OUT_WAREHOUSE_TYPE"));
+            Long inWarehouseId = Convert.toLong(eachWarehouseModelMap.get("TRANS_OUT_WAREHOUSE_ID"));
+            String inWarehouseName = null;
+            BaseWarehouse baseWarehouse = goodsBaseService.get(new BaseWarehouse(inWarehouseId));
+            if (baseWarehouse != null) {
+                inWarehouseName = baseWarehouse.getWarehouseName();
+            }
+
+            // 姣忎釜浠撳簱涓�涓祦姘磋〃
+            LWarehouseFlow inWarehouseFlow = new LWarehouseFlow();
+            // 娴佹按璁板綍鎬昏〃ID
+            long inWarehouseFlowId = IdUtil.generateId();
+            inWarehouseFlow.setId(inWarehouseFlowId);
+            inWarehouseFlow.setWarehouseType(0);
+            inWarehouseFlow.setWarehouseId(inWarehouseId);
+            inWarehouseFlow.setWarehouseName(inWarehouseName);
+            inWarehouseFlow.setThisType(1);
+            inWarehouseFlow.setBusinessType(WhBusinessEnum.BAOFEI.getValue() + 0);
+            inWarehouseFlow.setBusinessFormId(lWhFormBackId);
+            inWarehouseFlow.setOperatorId(userId);
+            inWarehouseFlow.setOperatorName(nickName);
+            inWarehouseFlow.setDealTime(dealTime);
+            flowArrayList.add(inWarehouseFlow);
+
+            //鎸夊瀷鍙峰垎 姣忎釜鍨嬪彿涓�涓� L_WH_GOODS_RECORD
+            Map<Object, List<Map<String, Object>>> eachWareHouseModelMap = eachWareHouseList.stream()
+                    .collect(Collectors.groupingBy(map -> map.get("BASE_GOODS_MODELS_ID")));
+            for (Object key : eachWareHouseModelMap.keySet()) {
+                Long baseGoodsModelsId = (Long) key;
+
+                List<Map<String, Object>> eachFfModelList = eachWareHouseModelMap.get(baseGoodsModelsId);
+                Map<String, Object> eachFfModelBase = eachFfModelList.get(0);
+                Long tempGoodsId = Convert.toLong(eachFfModelBase.get("BASE_GOODS_TEMPLATE_ID"));
+                String goodsName = Convert.toStr(eachFfModelBase.get("BASE_GOODS_TEMPLATE_NAME"));
+                String modelName = Convert.toStr(eachFfModelBase.get("BASE_GOODS_MODELS_NAME"));
+
+                // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
+                long whGoodsRecordId = IdUtil.generateId();
+                LWhGoodsRecord whGoodsRecord = new LWhGoodsRecord();
+                whGoodsRecord.setId(whGoodsRecordId);
+                whGoodsRecord.setWarehouseType(0);
+                whGoodsRecord.setWarehouseId(inWarehouseId);
+                whGoodsRecord.setWarehouseFlowId(inWarehouseFlowId);
+                whGoodsRecord.setBaseGoodsTemplateId(tempGoodsId);
+                whGoodsRecord.setGoodsTemplateName(goodsName);
+                whGoodsRecord.setBaseGoodsModelsId(baseGoodsModelsId);
+                whGoodsRecord.setBaseGoodsModelsName(modelName);
+                whGoodsRecord.setDealTime(dealTime);
+                //鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
+                whGoodsRecord.setThisType(1);
+                //閫氳繃LockManage鑾峰緱閿�
+                Object warehouseModelLockObj = LockManage.acquireLock(0, inWarehouseId, baseGoodsModelsId);
+                int goodsModelNum = 0;
+                // 瀛樻斁鎵�鏈夌殑鐗╁搧id 浠锋牸绛変俊鎭�
+                List<Map<String, Object>> scrappedAllGoodsList = new ArrayList<>();
+                synchronized (warehouseModelLockObj) {
+                    //鏌ヨ鏈熷垵鏁伴噺
+                    goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, inWarehouseId, baseGoodsModelsId, 1, null);
+                    for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
+                        scrappedAllGoodsList.addAll((List<Map<String, Object>>) depFormScrappedModel.get("scrappedGoodsList"));
+                    }
+                    // 姹囨�诲嚭闇�瑕佷慨鏀圭姸鎬佺殑鐗╁搧id
+                    List<Long> srappedGoodsIds = scrappedAllGoodsList.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList());
+
+                    // 璁剧疆鐗╁搧涓哄叆搴撴湭鍒嗗彂锛� 骞惰缃墍灞炰粨搴�
+                    lWhGoodsService.modGoodsTransfering(srappedGoodsIds, 0, inWarehouseId, warehouseName, 1);
+                    // 浣跨敤浜轰俊鎭�
+
+                    // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
+                    lWhGoodsRecordDetailsService.sameGoodsInsertMore(srappedGoodsIds, whGoodsRecordId, (short) 1);
+                }
+                // 涓婃柟鐗╁搧鐨勪环鏍�
+                Long formScrappedModelPrice = scrappedAllGoodsList.stream().mapToLong(map -> (long) map.get("price")).sum();
+                whGoodsRecord.setInitialCount(goodsModelNum);
+                whGoodsRecord.setEndCount(goodsModelNum + scrappedAllGoodsList.size());
+                whGoodsRecord.setThisCount(scrappedAllGoodsList.size());
+                whGoodsRecord.setTotalPrice(formScrappedModelPrice);
+                //lWhGoodsRecordService.insert(whGoodsRecord);
+                flowRecordArrayList.add(whGoodsRecord);
+            }
+
+            // 鎻愬彇baseGoodsModelsId骞舵斁鍏ユ柊鐨凩ist涓�
+            List<Long> allChangModelList = eachWareHouseList.stream()
+                    .map(map -> Convert.toLong(map.get("BASE_GOODS_MODELS_ID")))
+                    .distinct()
+                    .collect(Collectors.toList());
+            //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉�
+            lWhWarningCoreService.updateKuCun((short) 0, inWarehouseId, allChangModelList, null, dealTime);
+        }
+        // 鎻掑叆娴佹按鎬昏〃
+        flowInsertFlag = lWarehouseFlowService.insertBatch(flowArrayList);
+        if (flowInsertFlag == 0) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return null;
+        }
+        // 鎵归噺鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撱�怢_WH_GOODS_RECORD銆�
+        lWhGoodsRecordService.insertBatch(flowRecordArrayList);
+
+        return null;
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java b/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
index 2a97310..d555066 100644
--- a/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
+++ b/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
@@ -246,7 +246,7 @@
             Field[] fields = sourceClass.getDeclaredFields();
             for (Field field : fields) {
                 String fieldName = field.getName();
-                if (!fieldName.startsWith("isset__")) {
+                if (!fieldName.startsWith("isset_")) {
                     continue;
                 }
                 try {
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index a9989b2..dfffa9c 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,9 +1,9 @@
 package com.consum.base.service;
 
+import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.LockManage;
 import com.consum.model.po.*;
 import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.NumberGenerator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -112,7 +112,7 @@
             String goodsUnit = (String) tempGoodsInfo.get("unit");
 
             // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
-            long whGoodsRecordId = NumberGenerator.getLongSequenceNumberNano();
+            long whGoodsRecordId = IdUtil.generateId();
             LWhGoodsRecord whGoodsRecord = new LWhGoodsRecord();
             whGoodsRecord.setId(whGoodsRecordId);
             whGoodsRecord.setWarehouseId(warehouseId);
diff --git a/consum-base/src/main/java/com/consum/base/service/UsingFormBackService.java b/consum-base/src/main/java/com/consum/base/service/UsingFormBackService.java
index aa5741f..4003904 100644
--- a/consum-base/src/main/java/com/consum/base/service/UsingFormBackService.java
+++ b/consum-base/src/main/java/com/consum/base/service/UsingFormBackService.java
@@ -5,6 +5,7 @@
 import com.consum.base.pojo.request.UsingFormBackParam;
 import com.consum.base.pojo.response.UsingFormBackDetailVO;
 import com.consum.model.po.FinSysTenantUser;
+import com.iplatform.model.po.S_user_core;
 import com.walker.jdbc.service.BaseService;
 
 /**
@@ -15,7 +16,7 @@
  */
 public interface UsingFormBackService extends BaseService {
 
-    void add(UsingFormBackParam usingFormBackParam, FinSysTenantUser sysInfo);
+    void add(UsingFormBackParam usingFormBackParam, FinSysTenantUser sysInfo, S_user_core currentUser);
 
     PageUtil selectPageByList(UsingFormBackQry usingFormBackParam);
 
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
index 85d1297..e00cb1f 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
+import com.consum.base.core.DepUsingFormBackCoreServiceImpl;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
@@ -11,40 +12,26 @@
 import com.consum.base.pojo.request.UsingFormBackGoodsInfo;
 import com.consum.base.pojo.request.UsingFormBackParam;
 import com.consum.base.pojo.request.baseGoodModel;
-import com.consum.base.pojo.response.BaseGoodsTemplateInfo;
-import com.consum.base.pojo.response.UseInfo;
-import com.consum.base.pojo.response.UsingFormBackDetailListVO;
-import com.consum.base.pojo.response.UsingFormBackDetailVO;
-import com.consum.base.pojo.response.UsingFormBackGoodsTemplateInfo;
-import com.consum.base.pojo.response.UsingFormBackModelInfo;
-import com.consum.base.pojo.response.UsingFormBackVO;
-import com.consum.base.service.BaseCategoryService;
-import com.consum.base.service.FinSysTenantDepartmentService;
-import com.consum.base.service.LWhFormTransferService;
-import com.consum.base.service.UsingFormBackGoodsService;
-import com.consum.base.service.UsingFormBackModelService;
-import com.consum.base.service.UsingFormBackService;
-import com.consum.model.po.BaseCategory;
-import com.consum.model.po.FinSysTenantDepartment;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.UsingFormBack;
-import com.consum.model.po.UsingFormBackGoods;
-import com.consum.model.po.UsingFormBackModel;
+import com.consum.base.pojo.response.*;
+import com.consum.base.service.*;
+import com.consum.model.po.*;
+import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author asus
@@ -67,9 +54,10 @@
     private FinSysTenantDepartmentService finSysTenantDepartmentService;
     @Autowired
     private LWhFormTransferService lWhFormTransferService;
-
+    @Resource
+    private DepUsingFormBackCoreServiceImpl depUsingFormBackCoreService;
     @Override
-    public void add(UsingFormBackParam usingFormBackParam, FinSysTenantUser sysInfo) {
+    public void add(UsingFormBackParam usingFormBackParam, FinSysTenantUser sysInfo, S_user_core currentUser) {
 
         Long departmentId = usingFormBackParam.getDepartmentId();
         FinSysTenantDepartment department = finSysTenantDepartmentService.getById(departmentId);
@@ -135,6 +123,7 @@
 
 
         }
+        depUsingFormBackCoreService.updateBack(usingFormBackId ,currentUser,DateUtils.getDateTimeNumber(System.currentTimeMillis()));
     }
 
     @Override

--
Gitblit v1.9.1