From 58a518f8bc23ed382f4da2a86b09024b063a620c Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期一, 13 五月 2024 15:40:47 +0800
Subject: [PATCH] 20240511修改: 分发单优化, 分类,物品,分发单明细,采购单明细数据导入

---
 consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java |  256 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 237 insertions(+), 19 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
index 1094895..91b671b 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
@@ -1,28 +1,56 @@
 package com.consum.base.controller;
 
-import cn.hutool.core.convert.Convert;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.handler.WhWarningImportVerifyHandler;
+import com.consum.base.pojo.WarnConfImEntity;
 import com.consum.base.pojo.WhWarningConfigParam;
 import com.consum.base.pojo.query.WhWarningConfigQry;
-import com.consum.base.service.BaseWarehouseServiceImpl;
-import com.consum.base.service.LWhWarningConfigServiceImpl;
+import com.consum.base.service.BaseWarehouseService;
+import com.consum.base.service.LWhWarningConfigService;
 import com.consum.model.po.BaseWarehouse;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.WhWarningConfig;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.walker.db.page.GenericPager;
+import com.walker.file.FileInfo;
 import com.walker.infrastructure.utils.NumberGenerator;
+import com.walker.web.ResponseCode;
 import com.walker.web.ResponseValue;
-import io.swagger.annotations.Api;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import cn.hutool.core.convert.Convert;
+import io.swagger.annotations.Api;
 
 /**
  * @ClassName LWhWarningConfigController
@@ -37,9 +65,9 @@
 public class LWhWarningConfigController extends BaseController {
 
     @Resource
-    private LWhWarningConfigServiceImpl lWhWarningConfigService;
+    private LWhWarningConfigService lWhWarningConfigService;
     @Resource
-    private BaseWarehouseServiceImpl baseWarehouseService;
+    private BaseWarehouseService baseWarehouseService;
     private ObjectMapper mapper = new ObjectMapper();
 
     /**
@@ -48,6 +76,10 @@
     @PostMapping("/add")
     public ResponseValue add() throws Exception {
         WhWarningConfigParam param = CommonUtil.getObjFromReqBody(WhWarningConfigParam.class);
+        WhWarningConfigParam param2 = new WhWarningConfigParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         String modelConfigStr = param.getModelConfigStr();
         Long baseWarehouseId = param.getBaseWarehouseId();
         Long baseGoodsTemplateId = param.getBaseGoodsTemplateId();
@@ -84,26 +116,28 @@
             if (!CollectionUtils.isEmpty(containWarningConfig)) {
                 return ResponseValue.error("璁板綍宸插瓨鍦紒");
             }
-            Long lowerLimit = Convert.toLong(item.get("lowerLimit"));
-            Long upperLimit = Convert.toLong(item.get("upperLimit"));
+            Integer lowerLimit = Convert.toInt(item.get("lowerLimit"));
+            Integer upperLimit = Convert.toInt(item.get("upperLimit"));
             if (lowerLimit == null && lowerLimit == null) {
                 return ResponseValue.error("搴撳瓨涓婇檺銆佷笅闄愪笉鑳藉叏涓虹┖锛�");
             }
-            if (upperLimit != null && upperLimit < 0){
+            if (upperLimit != null && upperLimit < 0) {
                 return ResponseValue.error("搴撳瓨闄愬埗涓嶈兘灏忎簬0锛�");
             }
-            if (lowerLimit != null && lowerLimit < 0){
+            if (lowerLimit != null && lowerLimit < 0) {
                 return ResponseValue.error("搴撳瓨闄愬埗涓嶈兘灏忎簬0锛�");
             }
             if (upperLimit != null && lowerLimit != null && upperLimit < lowerLimit) {
                 return ResponseValue.error("搴撳瓨涓婇檺涓嶈兘灏忎簬涓嬮檺锛�");
             }
             WhWarningConfig whWarningConfig = new WhWarningConfig();
-            whWarningConfig.setId(NumberGenerator.getLongSequenceNumber());
+            whWarningConfig.setId(IdUtil.generateId());
             whWarningConfig.setWarehouseType(0);
             whWarningConfig.setBaseWarehouseId(baseWarehouseId);
             whWarningConfig.setBaseGoodsTemplateId(baseGoodsTemplateId);
             whWarningConfig.setBaseGoodsModelsId(baseGoodsModelsId);
+            whWarningConfig.setUpperLimit(upperLimit);
+            whWarningConfig.setLowerLimit(lowerLimit);
             if (whWarningConfig.getBaseGoodsModelsId() == null) {
                 whWarningConfig.setGoodsType(1);
             } else {
@@ -122,6 +156,10 @@
     @PostMapping("/upd")
     public ResponseValue upd() {
         WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (param.getId() == null || (param.getUpperLimit() == null && param.getLowerLimit() == null)) {
             return ResponseValue.error("搴撳瓨涓婇檺銆佷笅闄愪笉鑳藉叏涓虹┖锛�");
         }
@@ -138,6 +176,9 @@
     @DeleteMapping("del")
     public ResponseValue delById() {
         WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         if (param.getId() == null) {
             return ResponseValue.error("id涓虹┖");
         }
@@ -148,6 +189,9 @@
     @GetMapping("/getList")
     public ResponseValue getConfigList() {
         WhWarningConfigQry param = CommonUtil.getObjFromReq(WhWarningConfigQry.class);
+        WhWarningConfigQry param2 = new WhWarningConfigQry();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
         FinSysTenantUser sysInfo = this.getSysInfo();
         String tenantId = sysInfo.getTenantId();
@@ -162,15 +206,189 @@
     @GetMapping("/getById")
     public ResponseValue getById() {
         WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         WhWarningConfig whWarningConfig = lWhWarningConfigService.get(param);
         return ResponseValue.success(whWarningConfig);
     }
 
     @GetMapping("/getConfigList")
-    public ResponseValue getConfigList(WhWarningConfig param) {
+    public ResponseValue getWarnConfigList() {
+        WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class);
+        WhWarningConfig param2 = new WhWarningConfig();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
+
         if (param.getBaseWarehouseId() == null || param.getWarehouseType() == null || (param.getBaseGoodsModelsId() == null || param.getBaseGoodsTemplateId() == null)) {
             return ResponseValue.error("缂哄皯蹇呰鍙傛暟");
         }
         return ResponseValue.success(lWhWarningConfigService.select(param));
     }
+
+    /**
+     * @return 鑾峰彇椤圭洰瀵煎叆鐨勬ā鏉�
+     * @throws IOException
+     */
+    @GetMapping("getWarnConfImportTemplate")
+    public ResponseEntity<InputStreamResource> getProjectImportTemplate() throws IOException {
+        // 浠庡綋鍓嶉」鐩祫婧愮洰褰曡幏鍙栨枃浠�
+        org.springframework.core.io.Resource resource = new ClassPathResource("import/warningConfImp.xls");
+        // 鑾峰彇鏂囦欢杈撳叆娴�
+        InputStream inputStream = resource.getInputStream();
+        // 璁剧疆HTTP鍝嶅簲澶�
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+        String encodedFilename = URLEncoder.encode("搴撳瓨棰勮閰嶇疆瀵煎叆妯℃澘.xls", "UTF-8");
+        headers.setContentDispositionFormData("attachment", encodedFilename);
+        // 鍒涘缓InputStreamResource瀵硅薄锛屽皢鏂囦欢杈撳叆娴佸寘瑁呰捣鏉�
+        InputStreamResource resourceToDownload = new InputStreamResource(inputStream);
+        // 杩斿洖甯︽湁鏂囦欢杈撳叆娴佺殑ResponseEntity瀵硅薄
+        return ResponseEntity
+                .status(HttpStatus.OK)
+                .headers(headers)
+                .body(resourceToDownload);
+    }
+
+
+    @PostMapping("import")
+    public ResponseValue warnConfImport(MultipartFile multipartFile) throws Exception {
+        String originalFilename = multipartFile.getOriginalFilename();
+        if (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) {
+            return ResponseValue.error(ResponseCode.ERROR.getCode(), "鏂囦欢鏍煎紡鏈夎!");
+        }
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error(ResponseCode.ERROR.getCode(), "褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+        }
+
+        ImportParams params = new ImportParams();
+        params.setHeadRows(1);
+        params.setNeedVerify(true);
+        WhWarningImportVerifyHandler whWarningImportVerifyHandler = new WhWarningImportVerifyHandler(Long.valueOf(sysInfo.getTenantId()));
+        params.setVerifyHandler(whWarningImportVerifyHandler);
+
+        ExcelImportResult<WarnConfImEntity> result = ExcelImportUtil.importExcelMore(multipartFile.getInputStream(), WarnConfImEntity.class, params);
+
+        boolean verfiyFail = result.isVerfiyFail();
+        if (verfiyFail) {
+            StringBuilder errmsg = new StringBuilder();
+            List<WarnConfImEntity> failList = result.getFailList();
+            for (int i = 0; i < failList.size() && i < 20; i++) {
+                WarnConfImEntity entity = failList.get(i);
+                errmsg.append("绗�")
+                        .append(entity.getRowNum())
+                        .append("琛岀殑閿欒鏄細")
+                        .append(entity.getErrorMsg())
+                        .append("\r\n");
+            }
+            InputStream inputStream = new ByteArrayInputStream(errmsg.toString().getBytes(StandardCharsets.UTF_8));
+            FileInfo fileInfo = uploadFileToLocal(inputStream, NumberGenerator.generatorHexUUID() + ".txt", "-1", 111, 0, "-1");
+            String url = fileInfo.getUrl();
+            return ResponseValue.error(ResponseCode.PARAM_NOT_VALID.getCode(), url);
+        }
+
+
+        List<WarnConfImEntity> excelList = result.getList();
+        ArrayList<WhWarningConfig> configArrayList = new ArrayList<>(excelList.size());
+        // 鎸塨aseWarehouseId灞炴�у垎缁�
+        Map<Long, List<WarnConfImEntity>> groupedData = excelList.stream().collect(Collectors.groupingBy(WarnConfImEntity::getBaseWarehouseId));
+        for (Map.Entry<Long, List<WarnConfImEntity>> entry : groupedData.entrySet()) {
+            Long baseWarehouseId = entry.getKey();
+            List<WarnConfImEntity> houseModelList = entry.getValue();
+            // 鎻愬彇id骞跺瓨鍌ㄥ埌鏂板垪琛�
+            List<Long> modelIdList = houseModelList.stream()
+                    .map(WarnConfImEntity::getBaseGoodsModelsId)
+                    .collect(Collectors.toList());
+
+            List<Map<String, Object>> queryModelIsExistList = lWhWarningConfigService.queryModelIsExist(0, baseWarehouseId, modelIdList);
+            if (CollectionUtils.isEmpty(queryModelIsExistList)) {
+                // 鍏ㄩ儴涓烘柊澧�
+                for (WarnConfImEntity warnConfImEntity : houseModelList) {
+                    // 鏂板
+                    WhWarningConfig whWarningConfig = new WhWarningConfig();
+                    whWarningConfig.setId(IdUtil.generateId());
+                    whWarningConfig.setWarehouseType(0);
+                    whWarningConfig.setBaseWarehouseId(warnConfImEntity.getBaseWarehouseId());
+                    whWarningConfig.setBaseGoodsTemplateId(warnConfImEntity.getGoodsTemplateId());
+                    whWarningConfig.setBaseGoodsModelsId(warnConfImEntity.getBaseGoodsModelsId());
+                    whWarningConfig.setUpperLimit(warnConfImEntity.getUpperLimit());
+                    whWarningConfig.setLowerLimit(warnConfImEntity.getLowerLimit());
+                    if (whWarningConfig.getBaseGoodsModelsId() == null) {
+                        whWarningConfig.setGoodsType(1);
+                    } else {
+                        whWarningConfig.setGoodsType(2);
+                    }
+                    configArrayList.add(whWarningConfig);
+                }
+            } else {
+                // 鎻愬彇id骞跺瓨鍌ㄥ埌鏂板垪琛�
+                List<Long> dbExistModelIdList = queryModelIsExistList.stream()
+                        .map(map -> Convert.toLong(map.get("baseGoodsModelsId")))
+                        .collect(Collectors.toList());
+                for (WarnConfImEntity warnConfImEntity : houseModelList) {
+                    Long baseGoodsModelsId = warnConfImEntity.getBaseGoodsModelsId();
+                    WhWarningConfig whWarningConfig = new WhWarningConfig();
+                    whWarningConfig.setWarehouseType(0);
+                    whWarningConfig.setBaseWarehouseId(warnConfImEntity.getBaseWarehouseId());
+                    whWarningConfig.setBaseGoodsModelsId(warnConfImEntity.getBaseGoodsModelsId());
+                    whWarningConfig.setUpperLimit(warnConfImEntity.getUpperLimit());
+                    whWarningConfig.setLowerLimit(warnConfImEntity.getLowerLimit());
+
+                    if (dbExistModelIdList.contains(baseGoodsModelsId)) {
+                        // 淇敼
+                        limitEditByModeInfo(whWarningConfig);
+                    } else {
+                        // 鏂板
+                        whWarningConfig.setId(IdUtil.generateId());
+                        whWarningConfig.setBaseGoodsTemplateId(warnConfImEntity.getGoodsTemplateId());
+                        if (whWarningConfig.getBaseGoodsModelsId() == null) {
+                            whWarningConfig.setGoodsType(1);
+                        } else {
+                            whWarningConfig.setGoodsType(2);
+                        }
+                        configArrayList.add(whWarningConfig);
+                    }
+                }
+            }
+        }
+        if (!CollectionUtils.isEmpty(configArrayList)) {
+            int flag = lWhWarningConfigService.insertBatch(configArrayList);
+        }
+        return ResponseValue.success("瀵煎叆鎴愬姛!", 1);
+    }
+
+
+    private String KU_CUN_UPD_BY_MODE_INFO = "update WH_WARNING_CONFIG set ";
+
+    public int limitEditByModeInfo(WhWarningConfig config) {
+        StringBuilder sql = new StringBuilder(KU_CUN_UPD_BY_MODE_INFO);
+        Integer lowerLimit = config.getLowerLimit();
+        if (lowerLimit == null) {
+            sql.append("lower_limit=null");
+        } else {
+            sql.append("lower_limit=" + lowerLimit);
+        }
+        Integer upperLimit = config.getUpperLimit();
+        if (upperLimit == null) {
+            sql.append(",upper_Limit=null");
+        } else {
+            sql.append(",upper_Limit=" + upperLimit);
+        }
+        sql.append(" where 1=1");
+        Integer warehouseType = config.getWarehouseType();
+        if (warehouseType != null) {
+            sql.append(" and warehouse_Type=" + warehouseType);
+        }
+        Long baseWarehouseId = config.getBaseWarehouseId();
+        if (baseWarehouseId != null) {
+            sql.append(" and BASE_WAREHOUSE_ID=" + baseWarehouseId);
+        }
+        Long baseGoodsModelsId = config.getBaseGoodsModelsId();
+        if (baseGoodsModelsId != null) {
+            sql.append(" and BASE_GOODS_MODELS_ID=" + baseGoodsModelsId);
+        }
+        lWhWarningConfigService.update(sql.toString());
+        return 1;
+    }
 }

--
Gitblit v1.9.1