From 50b1b07bfa382c3f19c6b23f1cff4dfa50294f07 Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期四, 30 十一月 2023 10:58:38 +0800
Subject: [PATCH] feat: 库存管理 增加加载状态

---
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java |  410 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 287 insertions(+), 123 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
index b40b06d..79c9669 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
@@ -2,26 +2,36 @@
 
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
-import com.consum.base.pojo.LWhFormInventoryDto;
-import com.consum.base.pojo.LWhFormInventoryParam;
-import com.consum.base.util.IdUtil;
-import com.consum.model.po.*;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.query.LWhFormInventoryQry;
+import com.consum.base.pojo.request.FormInventoryParam;
+import com.consum.base.pojo.request.LWhFormInventoryParam;
+import com.consum.base.pojo.response.FormInventoryDetailVO;
+import com.consum.base.pojo.response.FormInventoryGoodsVO;
+import com.consum.base.pojo.response.FormInventoryVO;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenant;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormInventory;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.parameters.P;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 /**
  * @Description 鐩樼偣
@@ -37,38 +47,45 @@
     @Autowired
     private BaseWarehouseServiceImpl baseWarehouseService;
     @Autowired
-    private FinSysTenantUserServiceImpl finSysTenantUserService;
-    @Autowired
     private LWhFormInventoryGoodsServiceImpl inventoryGoodsService;
+    @Autowired
+    private LWhGoodsService lWhGoodsService;
+    @Autowired
+    private FinSysTenantServiceImpl finSysTenantService;
+    @Autowired
+    @Lazy
+    private LWhFormInventoryCoreService lWhFormInventoryCoreService;
 
 
     private static final String QUERY_LIST = "select * from l_wh_form_inventory where 1=1 ";
 
-    private static final String QUERY_PD_List = "SELECT bgt.GOODS_NAME goodsName,model.MODEL_NAME modelName,bgt.CLASSIFICATION,model.UNIT,\n" +
-            "       record.endCount,bgt.ID goodsTemplateId,model.ID modelsId\n" +
-            "FROM BASE_GOODS_MODELS model\n" +
-            "         LEFT JOIN (SELECT COUNT(1) endCount, BASE_GOODS_MODELS_ID\n" +
-            "                    FROM L_WH_GOODS\n" +
-            "                    WHERE WAREHOUSE_TYPE = 0\n" +
-            "                      AND WAREHOUSE_ID = 1\n" +
-            "                      AND STATES = ?\n" +
-            "                    GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n" +
-            "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; ";
+    private static final String QUERY_PD_List = "SELECT bgt.GOODS_NAME goodsName,model.MODEL_NAME modelName,bgt.CLASSIFICATION,model.UNIT,\n"
+        + "       record.endCount,bgt.ID goodsTemplateId,model.ID modelsId\n" + "FROM BASE_GOODS_MODELS model\n"
+        + "         LEFT JOIN (SELECT COUNT(1) endCount, BASE_GOODS_MODELS_ID\n" + "                    FROM L_WH_GOODS\n"
+        + "                    WHERE WAREHOUSE_TYPE = 0\n" + "                      AND WAREHOUSE_ID = 1\n" + "                      AND STATES = ?\n"
+        + "                    GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n"
+        + "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; ";
+
+    private static final String QUERY_PD_DETAIL_LIST =
+        "SELECT fig.id,fi.WAREHOUSE_NAME,fig.GOODS_TEMPLATE_NAME,fig.BASE_GOODS_MODELS_NAME,fig.INVENTORY_RESULT,fig.INIT_COUNTS,fig.INVENTORY_COUNTS,"
+            + "fig.ERROR_COUNTS,fi.AGENCY_NAME,fi.OPERATOR_NAME,fi.STOP_TIME operatorTime,"
+            + "CASE WHEN fig.INVENTORY_RESULT = 2 THEN fi.IN_BUSINESS_FORM_CODE WHEN fig.INVENTORY_RESULT = 3 THEN fi.OUT_BUSINESS_FORM_CODE END warehouseFormCode "
+            + "FROM l_wh_form_inventory fi INNER JOIN l_wh_form_inventory_goods fig ON fi.ID = fig.WH_FORM_INVENTORY_ID where 1=1 ";
 
     /**
+     * @param param
+     * @param currentUser  褰撳墠鐧诲綍鐢ㄦ埛
+     * @param operatorUser 鐩樼偣浜�
+     * @param monitorUser  鐩戠洏浜�
+     * @return
      * @Description 鏂板
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
-     * @param param
-     * @param currentUser   褰撳墠鐧诲綍鐢ㄦ埛
-     * @param operatorUser  鐩樼偣浜�
-     * @param operatorUser2 鐩戠洏浜�
-     * @return
      */
-    public int add(LWhFormInventoryParam param, FinSysTenantUser currentUser, S_user_core operatorUser, S_user_core operatorUser2) {
+    public int add(FormInventoryParam param, FinSysTenantUser currentUser, FinSysTenantUser operatorUser, FinSysTenantUser monitorUser) {
         //鏂板鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = new LWhFormInventory();
-        BeanUtils.copyProperties(param,lWhFormInventory);
+        BeanUtils.copyProperties(param, lWhFormInventory);
         lWhFormInventory.setId(IdUtil.generateId());
         //鐩樼偣鍗曠紪鐮�
         String businessFormCode = codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Inventory);
@@ -78,15 +95,23 @@
         if (baseWarehouse != null) {
             lWhFormInventory.setWarehouseName(baseWarehouse.getWarehouseName());
         }
-        lWhFormInventory.setOperatorName(operatorUser.getUser_name());
-        lWhFormInventory.setOperatorName2(operatorUser2.getUser_name());
+        if (operatorUser != null) {
+            lWhFormInventory.setOperatorId(operatorUser.getId());
+            lWhFormInventory.setOperatorName(operatorUser.getUserName());
+        }
+        if (monitorUser != null) {
+            lWhFormInventory.setOperatorId2(monitorUser.getId());
+            lWhFormInventory.setOperatorName2(monitorUser.getUserName());
+        }
+
         lWhFormInventory.setStates(0);
         lWhFormInventory.setAgencyId(Long.valueOf(currentUser.getTenantId()));
-        lWhFormInventory.setAgencyName(currentUser.getTenantName());
+        FinSysTenant finSysTenant = finSysTenantService.selectById(Long.valueOf(currentUser.getTenantId()));
+        lWhFormInventory.setAgencyName(finSysTenant.getName());
         lWhFormInventory.setCreatorId(currentUser.getSysUserId());
         lWhFormInventory.setCreatorName(currentUser.getUserName());
         lWhFormInventory.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
-
+        lWhFormInventory.setBeiz1(param.getRemark());
         return this.insert(lWhFormInventory);
     }
 
@@ -95,142 +120,281 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
      */
-    public GenericPager<LWhFormInventory> queryList(LWhFormInventoryParam param, FinSysTenantUser sysInfo) {
+    public GenericPager<LWhFormInventory> queryList(LWhFormInventoryQry param, FinSysTenantUser sysInfo) {
         StringBuilder sql = new StringBuilder(QUERY_LIST);
         HashMap<String, Object> paramts = new HashMap<>();
 
         //鐩樼偣鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
-            sql.append(" and BUSINESS_FORM_CODE like:BUSINESS_FORM_CODE ");
-            paramts.put("BUSINESS_FORM_CODE", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
+            sql.append("and BUSINESS_FORM_CODE =:BUSINESS_FORM_CODE ");
+            paramts.put("BUSINESS_FORM_CODE", param.getBusinessFormCode());
         }
         //鐩樼偣鍗曞悕绉�
         if (!StringUtils.isEmpty(param.getBusinessFormName())) {
-            sql.append(" and BUSINESS_FORM_NAME =:BUSINESS_FORM_NAME ");
+            sql.append("and BUSINESS_FORM_NAME like :BUSINESS_FORM_NAME ");
             paramts.put("BUSINESS_FORM_NAME", StringUtils.CHAR_PERCENT + param.getBusinessFormName() + StringUtils.CHAR_PERCENT);
         }
         //浠撳簱缂栧彿
         if (param.getWarehouseId() != null) {
-            sql.append(" and WAREHOUSE_ID =:WAREHOUSE_ID ");
+            sql.append("and WAREHOUSE_ID =:WAREHOUSE_ID ");
             paramts.put("WAREHOUSE_ID", param.getWarehouseId());
         }
         //鐩樼偣鏃堕棿
-        if (param.getInventoryDateStart() != null) {
-            sql.append(" and INVENTORY_DATE >=:inventoryDateStart ");
-            paramts.put("inventoryDateStart", param.getInventoryDateStart() * 1000000);
+        if (param.getStartTime() != null) {
+            sql.append("and INVENTORY_DATE >=:inventoryDateStart ");
+            paramts.put("inventoryDateStart", param.getStartTime() * 1000000);
         }
-        if (param.getInventoryDateEnd() != null) {
-            sql.append(" and INVENTORY_DATE <:inventoryDateEnd ");
-            paramts.put("inventoryDateEnd", param.getInventoryDateEnd() * 1000000 + 240000);
+        if (param.getEndTime() != null) {
+            sql.append("and INVENTORY_DATE <:inventoryDateEnd ");
+            paramts.put("inventoryDateEnd", param.getEndTime() * 1000000 + 240000);
         }
         //鏈烘瀯
-        sql.append(" and AGENCY_ID =:AGENCY_ID ");
+        sql.append("and AGENCY_ID =:AGENCY_ID ");
         paramts.put("AGENCY_ID", sysInfo.getTenantId());
 
-        sql.append(" ORDER BY CREATE_TIME DESC ");
+        sql.append("ORDER BY CREATE_TIME DESC ");
         return selectSplit(sql.toString(), paramts, new LWhFormInventory());
     }
 
-    /**
-     * @Description 鐩樼偣
-     * @Author 鍗㈠簡闃�
-     * @Date 2023/10/31
-     * @param id  鐩樼偣鍗昳d
-     */
-    public List queryPdList(Long id) {
+
+    public List<FormInventoryGoodsVO> saveInventory(FormInventoryVO dto, Long id) {
         //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(id));
         if (lWhFormInventory == null) {
-            log.error("鐩樼偣澶辫触");
-        }
-        //2.鏌ヨ鐩樼偣鍗曟暟鎹�
-        List<Map<String, Object>> list = this.select(QUERY_PD_List, new Object[]{lWhFormInventory.getWarehouseId()});
-        if (CollectionUtils.isEmpty(list)) {
-            log.error("鐩樼偣澶辫触");
-            return null;
-        }
-        //3.鏂板鐩樼偣鍗曠墿鍝佽褰�
-        int flag = inventoryGoodsService.add(list, lWhFormInventory.getWarehouseId());
-        if (flag != list.size()) {
-            log.error("鏂板鐩樼偣鍗曡褰�");
-            return null;
-        }
-        //4.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曠墿鍝�
-        return inventoryGoodsService.getByInventoryId(id);
-    }
-
-    /**
-     * 鏆傚瓨
-     * @author 鍗㈠簡闃�
-     * @date 2023/10/31
-     */
-    public int temporaryStorage(LWhFormInventoryDto dto) {
-        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
-        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
-        if (lWhFormInventory == null) {
-            log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触");
-            return 0;
+            log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�");
         }
         //2.淇敼鐩樼偣鍗�
         lWhFormInventory.setStates(1);
         lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         int flag1 = this.update(lWhFormInventory);
         if (flag1 == 0) {
-            log.error("淇敼鐩樼偣鍗� 澶辫触");
+            log.error("淇敼鐩樼偣鍗曞け璐�");
+        }
+        //3.娣诲姞鐩樼偣鍗曠墿鍝�
+        List<FormInventoryGoodsVO> formInventoryGoodsList = dto.getFormInventoryGoodsList();
+        if (CollectionUtils.isEmpty(formInventoryGoodsList)) {
+            log.error("鐩樼偣鍗曠墿鍝佷负绌�");
+        }
+        List<FormInventoryGoodsVO> result = inventoryGoodsService.add(formInventoryGoodsList, id);
+
+        return result;
+    }
+
+
+    /**
+     * 淇濆瓨鐩樼偣淇℃伅
+     *
+     * @author 鍗㈠簡闃�
+     * @date 2023/10/31
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int updateInventoryInfo(LWhFormInventoryParam dto, Integer state, S_user_core currentUser, FinSysTenantUser sysInfo) {
+        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
+        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
+        if (lWhFormInventory == null) {
+            log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�");
             return 0;
         }
-        //3.鏇存柊鐩樼偣鍗曠墿鍝�
-        List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList();
-        int flag2 = inventoryGoodsService.update(inventoryGoodsList);
-        if (flag2 != inventoryGoodsList.size()) {
-            log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触");
+        //娣诲姞鐩樼偣鍗曠墿鍝�
+        List<FormInventoryGoodsVO> inventoryGoodsList = dto.getInventoryGoodsList();
+        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
+            log.error("鐩樼偣鍗曠墿鍝佷负绌�");
             return 0;
         }
+        this.inventoryGoodsService.updateInventoryGoods(inventoryGoodsList);
+        //淇敼鐩樼偣鍗�
+        if (state == 2) {
+            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+
+            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            String inOutFormByInventoryId = lWhFormInventoryCoreService.createInOutFormByInventoryId(dto.getId(), currentUser, sysInfo);
+            if (!StringUtils.isEmpty(inOutFormByInventoryId)) {
+                log.error(inOutFormByInventoryId);
+                return 0;
+            }
+        }
+        lWhFormInventory.setStates(state);
+        lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        int flag1 = this.update(lWhFormInventory);
+        if (flag1 == 0) {
+            log.error("淇敼鐩樼偣鍗曞け璐�");
+            return 0;
+        }
+
         return 1;
     }
 
     /**
      * 瀹屾垚鐩樼偣
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/31
      */
-    public int finishPd(LWhFormInventoryDto dto) {
-        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
-        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
-        if (lWhFormInventory == null) {
-            log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触");
-            return 0;
+//    public int finishPd(LWhFormInventoryParam dto) {
+//        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
+//        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
+//        if (lWhFormInventory == null) {
+//            log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗� 澶辫触");
+//            return 0;
+//        }
+//        //2.淇敼鐩樼偣鍗�
+//        lWhFormInventory.setStates(2);
+//        lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+//        int flag1 = this.update(lWhFormInventory);
+//        if (flag1 == 0) {
+//            log.error("淇敼鐩樼偣鍗� 澶辫触");
+//            return 0;
+//        }
+//        //3.鏇存柊鐩樼偣鍗曠墿鍝�
+//        List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList();
+//        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
+//            log.error("鐩樼偣鍗曠墿鍝� 涓虹┖");
+//            return 0;
+//        }
+//        for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) {
+//            int errorCounts = inventoryGoods.getInitCounts() - inventoryGoods.getInventoryCounts();
+//            if (errorCounts > 0) {
+//                inventoryGoods.setInventoryResult(3);
+//            } else if (errorCounts < 0) {
+//                inventoryGoods.setInventoryResult(2);
+//            } else {
+//                inventoryGoods.setInventoryResult(1);
+//            }
+//            inventoryGoods.setErrorCounts(Math.abs(errorCounts));
+//        }
+//        int flag2 = inventoryGoodsService.update(inventoryGoodsList);
+//        if (flag2 != inventoryGoodsList.size()) {
+//            log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触");
+//            return 0;
+//        }
+//        return 1;
+//    }
+
+    /**
+     * @return
+     * @Description 寮傚父鏄庣粏鍒楄〃鏌ヨ
+     * @Author 鍗㈠簡闃�
+     * @Date 2023/11/1
+     */
+    public PageUtil<FormInventoryDetailVO> queryPdDetailList(LWhFormInventoryQry param, FinSysTenantUser sysInfo) {
+        StringBuilder sql = new StringBuilder(QUERY_PD_DETAIL_LIST);
+        HashMap<String, Object> paramts = new HashMap<>();
+
+        //鏈烘瀯
+        sql.append(" and AGENCY_ID like:AGENCY_ID ");
+        if (param.getAgencyId() != null) {
+            paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT);
+        } else {
+            paramts.put("AGENCY_ID", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT);
         }
-        //2.淇敼鐩樼偣鍗�
-        lWhFormInventory.setStates(2);
-        lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
-        int flag1 = this.update(lWhFormInventory);
-        if (flag1 == 0) {
-            log.error("淇敼鐩樼偣鍗� 澶辫触");
-            return 0;
+        //浠撳簱缂栧彿
+        if (param.getWarehouseId() != null) {
+            sql.append("and WAREHOUSE_ID =:WAREHOUSE_ID ");
+            paramts.put("WAREHOUSE_ID", param.getWarehouseId());
         }
-        //3.鏇存柊鐩樼偣鍗曠墿鍝�
-        List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList();
-        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
-            log.error("鐩樼偣鍗曠墿鍝� 涓虹┖");
-            return 0;
+        //鐗╁搧鍚嶇О
+        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
+            sql.append("and GOODS_TEMPLATE_NAME =:GOODS_TEMPLATE_NAME ");
+            paramts.put("GOODS_TEMPLATE_NAME", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
-        for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) {
-            int errorCounts = inventoryGoods.getInitCounts() - inventoryGoods.getInventoryCounts();
-            if (errorCounts >0 ) {
-                inventoryGoods.setInventoryResult(3);
-            } else if (errorCounts <0){
-                inventoryGoods.setInventoryResult(2);
-            } else {
-                inventoryGoods.setInventoryResult(1);
-            }
-            inventoryGoods.setErrorCounts(errorCounts);
+        //瑙勬牸鍨嬪彿
+        if (param.getBaseGoodsModelsId() != null) {
+            sql.append("and BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID ");
+            paramts.put("BASE_GOODS_MODELS_ID", param.getBaseGoodsModelsId());
         }
-        int flag2 = inventoryGoodsService.update(inventoryGoodsList);
-        if (flag2 != inventoryGoodsList.size()) {
-            log.error("鏇存柊鐩樼偣鍗曠墿鍝� 澶辫触");
-            return 0;
+        //绫诲瀷(鍑哄叆搴撶被鍨�)
+        Integer inventoryResult = param.getInventoryResult();
+        if (inventoryResult != null) {
+            sql.append("and INVENTORY_RESULT =:INVENTORY_RESULT ");
+            paramts.put("INVENTORY_RESULT", inventoryResult);
         }
-        return 1;
+        //鍑哄叆搴撳崟鍙�
+        if (param.getWarehouseFormCode() != null) {
+            sql.append(
+                " and CASE WHEN fig.INVENTORY_RESULT = 2 THEN fi.IN_BUSINESS_FORM_CODE =:warehouseFormCode WHEN fig.INVENTORY_RESULT = 3 THEN fi.OUT_BUSINESS_FORM_CODE =:warehouseFormCode END ");
+            paramts.put("warehouseFormCode", param.getWarehouseFormCode());
+        }
+        //鎿嶄綔浜�
+        if (!StringUtils.isEmpty(param.getOperatorName())) {
+            sql.append("and OPERATOR_NAME =:OPERATOR_NAME ");
+            paramts.put("OPERATOR_NAME", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT);
+        }
+        //缁撴潫鏃堕棿
+        if (param.getStartTime() != null) {
+            sql.append("and STOP_TIME >=:stopTimeStart ");
+            paramts.put("stopTimeStart", param.getStartTime() * 1000000);
+        }
+        if (param.getEndTime() != null) {
+            sql.append("and STOP_TIME <:stopTimeEnd ");
+            paramts.put("stopTimeEnd", param.getEndTime() * 1000000 + 240000);
+        }
+        sql.append("AND fig.INVENTORY_RESULT in(2,3) ");
+        sql.append("ORDER BY CREATE_TIME DESC ");
+        GenericPager<Map<String, Object>> mapGenericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        PageUtil<FormInventoryDetailVO> pageUtil = new PageUtil<>(mapGenericPager);
+        List<FormInventoryDetailVO> result = Lists.newArrayList();
+        mapGenericPager.getDatas().forEach(item -> {
+            FormInventoryDetailVO formInventoryDetailVO = MapUtils.convertMapToObj(item, FormInventoryDetailVO.class);
+            formInventoryDetailVO.setInventoryResultType(
+                formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
+            formInventoryDetailVO.setInventoryType(
+                formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩鍏ュ簱" : "鐩樹簭鍑哄簱"));
+            formInventoryDetailVO.setWarehouseFormCode(formInventoryDetailVO.getWarehouseFormCode());
+            result.add(formInventoryDetailVO);
+        });
+        pageUtil.setDatas(result);
+        return pageUtil;
+    }
+
+    public List<FormInventoryGoodsVO> selectDetailById(Long id) {
+
+        String sql = "select fig.id, fig.BASE_GOODS_TEMPLATE_ID,fig.GOODS_TEMPLATE_NAME,fig.BASE_GOODS_MODELS_NAME,"
+            + "fig.INIT_COUNTS inventoryCount,fig.INVENTORY_COUNTS realNum,fig.INVENTORY_RESULT status,fig.unit,bgt.CLASSIFICATION type from "
+            + "l_wh_form_inventory_goods fig left join base_goods_template bgt on bgt.id =fig.BASE_GOODS_TEMPLATE_ID  where fig.WH_FORM_INVENTORY_ID = :id";
+        HashMap<String, Object> param = new HashMap<>();
+        param.put("id", id);
+        List<Map<String, Object>> select = select(sql, param, new MapperUtil());
+        List<FormInventoryGoodsVO> result = Lists.newArrayList();
+        select.forEach(item -> {
+            FormInventoryGoodsVO formInventoryGoodsVO = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class);
+            result.add(formInventoryGoodsVO);
+        });
+        return result;
+    }
+
+    public FormInventoryVO queryInventBaseGoodTemplate(Long id) {
+        FormInventoryVO formInventoryVO = new FormInventoryVO();
+
+        LWhFormInventory lWhFormInventory = new LWhFormInventory();
+        lWhFormInventory.setId(id);
+        LWhFormInventory inventory = this.get(lWhFormInventory);
+        if (inventory == null) {
+            return null;
+        }
+        Long warehouseId = inventory.getWarehouseId();
+        Integer warehouseType = inventory.getWarehouseType();
+
+        formInventoryVO.setBusinessFormCode(inventory.getBusinessFormCode());
+        formInventoryVO.setBusinessFormName(inventory.getBusinessFormName());
+        formInventoryVO.setWarehouseId(warehouseId);
+        formInventoryVO.setWarehouseName(inventory.getWarehouseName());
+
+        String sql =
+            "select bgt.id baseGoodsTemplateId,bgt.GOODS_NAME goodsTemplateName,bgm.MODEL_NAME baseGoodsModelsName,bgt.CLASSIFICATION type,bgm.UNIT "
+                + "from base_goods_models bgm left join base_goods_template bgt on bgm.GOODS_TEMPLATES_ID = bgt.id "
+                + "where bgt.AGENCY_ID = :agencyId";
+        HashMap<String, Object> param = new HashMap<>();
+        param.put("agencyId", inventory.getAgencyId());
+        List<Map<String, Object>> result = this.select(sql, param, new MapperUtil());
+        List<FormInventoryGoodsVO> goodsVOList = Lists.newArrayList();
+        result.forEach(item -> {
+            FormInventoryGoodsVO baseGoodsModels = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class);
+            int inventoryCount = this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModels.getId(), 1, null);
+            baseGoodsModels.setInventoryCount(inventoryCount);
+            goodsVOList.add(baseGoodsModels);
+        });
+        formInventoryVO.setFormInventoryGoodsList(goodsVOList);
+        return formInventoryVO;
     }
 }

--
Gitblit v1.9.1