Prechádzať zdrojové kódy

申购添加明细excel导入

yzc 1 rok pred
rodič
commit
a1d6878075

+ 15 - 5
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeDetailController.java

@@ -1,15 +1,17 @@
 package com.fjhx.purchase.controller.subscribe;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.fjhx.common.constant.SourceConstant;
-import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.subscribe.SubscribeDetailExcelBo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
+import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -87,4 +89,12 @@ public class SubscribeDetailController {
         subscribeDetailService.delete(dto.getId());
     }
 
+    /**
+     * 申购明细导入
+     */
+    @PostMapping("/excelImport")
+    public List<SubscribeDetailExcelBo> issueExcelImport(@RequestParam("file") MultipartFile file) {
+        return subscribeDetailService.excelImport(file);
+    }
+
 }

+ 59 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/SubscribeDetailExcelBo.java

@@ -0,0 +1,59 @@
+package com.fjhx.purchase.entity.subscribe;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 申购明细Excel导入实体
+ */
+@Getter
+@Setter
+public class SubscribeDetailExcelBo extends BasePo {
+
+    /**
+     * 关联ID  产品ID/货品ID
+     */
+    private Long bussinessId;
+
+    /**
+     * 申购数量
+     */
+    @ExcelProperty("申购数量")
+    private BigDecimal count;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty("备注")
+    private String remark;
+
+    /**
+     * 货品定义
+     */
+    private Integer productDefinition;
+
+    /**
+     * 货品编码
+     */
+    @ExcelProperty("物品编码")
+    private String productCustomCode;
+
+    /**
+     * 货品名称
+     */
+    private String productName;
+
+    /**
+     * 货品规格型号
+     */
+    private String productSpec;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+}

+ 11 - 4
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeDetailService.java

@@ -1,11 +1,13 @@
 package com.fjhx.purchase.service.subscribe;
 
-import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
-import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
+import com.fjhx.purchase.entity.subscribe.SubscribeDetailExcelBo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
+import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
+import com.ruoyi.common.core.service.BaseService;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -55,4 +57,9 @@ public interface SubscribeDetailService extends BaseService<SubscribeDetail> {
      * 申购统计(申购单分页)
      */
     Map<String, Object> subscribeStatistics(SubscribeDetailSelectDto dto);
+
+    /**
+     * 申购明细导入
+     */
+    List<SubscribeDetailExcelBo> excelImport(MultipartFile file);
 }

+ 37 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -14,7 +14,9 @@ import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.item.util.excel.util.ExcelUtil;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.subscribe.SubscribeDetailExcelBo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
@@ -28,7 +30,7 @@ import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.service.warehouse.WarehouseService;
-import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
@@ -36,6 +38,7 @@ import com.ruoyi.system.service.ISysRoleService;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -334,4 +337,37 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         return dictTenantDataService.getList(dto);
     }
 
+    /**
+     * 申购明细Excel导入
+     */
+    @Override
+    public List<SubscribeDetailExcelBo> excelImport(MultipartFile file) {
+        List<SubscribeDetailExcelBo> excelBoList = ExcelUtil.read(file, SubscribeDetailExcelBo.class);
+        if (ObjectUtil.isEmpty(excelBoList)) {
+            return excelBoList;
+        }
+        List<String> productCodes = excelBoList.stream().map(SubscribeDetailExcelBo::getProductCustomCode).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productCodes)) {
+            List<String> notArr = new ArrayList<>();
+            //赋值产品信息
+            Map<String, ProductInfo> productInfoMap = productInfoService.mapKEntity(ProductInfo::getCustomCode, q -> q.in(ProductInfo::getCustomCode, productCodes));
+            for (SubscribeDetailExcelBo subscribeDetailExcelBo : excelBoList) {
+                ProductInfo productInfo = productInfoMap.get(subscribeDetailExcelBo.getProductCustomCode());
+                if (ObjectUtil.isEmpty(productInfo)) {
+                    notArr.add(subscribeDetailExcelBo.getProductCustomCode());
+                    continue;
+                }
+                subscribeDetailExcelBo.setBussinessId(productInfo.getId());
+                subscribeDetailExcelBo.setProductDefinition(productInfo.getDefinition());
+                subscribeDetailExcelBo.setProductName(productInfo.getName());
+                subscribeDetailExcelBo.setProductSpec(productInfo.getSpec());
+                subscribeDetailExcelBo.setProductUnit(productInfo.getUnit());
+            }
+            if (notArr.size() != 0) {
+                throw new ServiceException("以下产品不存在:" + notArr.stream().collect(Collectors.joining(",")));
+            }
+        }
+        return excelBoList;
+    }
+
 }