Parcourir la source

产品BOMExcel导出

yzc il y a 1 an
Parent
commit
688f50a09b

+ 7 - 0
hx-item/src/main/java/com/fjhx/item/controller/product/ProductBomInfoController.java

@@ -3,6 +3,7 @@ package com.fjhx.item.controller.product;
 import cn.hutool.core.bean.BeanUtil;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.ProcessesBo;
+import com.fjhx.item.entity.product.dto.ProductBomDetailSelectDto;
 import com.fjhx.item.entity.product.dto.ProductBomInfoDto;
 import com.fjhx.item.entity.product.po.ProductBomDetail;
 import com.fjhx.item.entity.product.po.ProductInfo;
@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -112,4 +114,9 @@ public class ProductBomInfoController {
 //        productInfoService.updateById(productPrice);
     }
 
+    @PostMapping("/exportExcel")
+    public void exportExcel(@RequestBody ProductBomDetailSelectDto dto, HttpServletResponse httpServletResponse) {
+        productBomDetailService.exportExcel(dto, httpServletResponse);
+    }
+
 }

+ 35 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/ProductBomDetailExcelBo.java

@@ -0,0 +1,35 @@
+package com.fjhx.item.entity.product;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
+public class ProductBomDetailExcelBo {
+    private final int columnWidth = 16;
+
+    @ExcelProperty("产品名称")
+    private String productName;
+    @ExcelProperty("产品编码")
+    private String productCode;
+    @ExcelProperty("物料名称")
+    private String materialName;
+    @ExcelProperty("物料编码")
+    private String materialCode;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("规格尺寸")
+    private String materialSpecDim;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("标准用量")
+    private Integer standardDosage;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("损耗率")
+    private Integer lossRate;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("备注")
+    private String remark;
+}

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductBomDetailVo.java

@@ -47,4 +47,9 @@ public class ProductBomDetailVo extends ProductBomDetail {
 
     private String processesName;
 
+    private String productName;
+    private String productCode;
+
+    private String materialSpecDim;
+
 }

+ 3 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductBomDetailService.java

@@ -1,10 +1,12 @@
 package com.fjhx.item.service.product;
 
+import com.fjhx.item.entity.product.dto.ProductBomDetailSelectDto;
 import com.fjhx.item.entity.product.po.ProductBomDetail;
 import com.fjhx.item.entity.product.vo.ProductBomDetailVo;
 import com.ruoyi.common.core.service.BaseService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 
@@ -20,4 +22,5 @@ public interface ProductBomDetailService extends BaseService<ProductBomDetail> {
 
     List<ProductBomDetailVo> getList(IWrapper<Object> wrapper);
 
+    void exportExcel(ProductBomDetailSelectDto dto, HttpServletResponse httpServletResponse);
 }

+ 35 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductBomDetailServiceImpl.java

@@ -1,6 +1,10 @@
 package com.fjhx.item.service.product.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
+import com.fjhx.item.entity.product.ProductBomDetailExcelBo;
+import com.fjhx.item.entity.product.dto.ProductBomDetailSelectDto;
 import com.fjhx.item.entity.product.po.ProductBomDetail;
 import com.fjhx.item.entity.product.vo.ProductBomDetailVo;
 import com.fjhx.item.mapper.product.ProductBomDetailMapper;
@@ -10,6 +14,8 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.List;
 
 
@@ -30,6 +36,12 @@ public class ProductBomDetailServiceImpl extends ServiceImpl<ProductBomDetailMap
     @Override
     public List<ProductBomDetailVo> getList(IWrapper<Object> wrapper) {
         List<ProductBomDetailVo> list = baseMapper.getList(wrapper);
+        //赋值产品信息
+        productInfoService.attributeAssign(list, ProductBomDetailVo::getProductId, (item, product) -> {
+            item.setProductName(product.getName());
+            item.setProductCode(product.getCustomCode());
+        });
+        //赋值物料信息
         productInfoService.attributeAssign(list, ProductBomDetail::getMaterialId, (item, material) -> {
             item.setMaterialName(material.getName());
             item.setMaterialCode(material.getCustomCode());
@@ -41,6 +53,29 @@ public class ProductBomDetailServiceImpl extends ServiceImpl<ProductBomDetailMap
             item.setMaterialColor(material.getColor());
             item.setMaterialColorCardCode(material.getColorCardCode());
         });
+
+        for (ProductBomDetailVo vo : list) {
+            if (vo.getMaterialLength() == null) {
+                vo.setMaterialLength(BigDecimal.ZERO);
+            }
+            if (vo.getMaterialWidth() == null) {
+                vo.setMaterialWidth(BigDecimal.ZERO);
+            }
+            if (vo.getMaterialHeight() == null) {
+                vo.setMaterialHeight(BigDecimal.ZERO);
+            }
+            vo.setMaterialSpecDim(String.format("%s * %s * %s", vo.getMaterialLength(), vo.getMaterialWidth(), vo.getMaterialWidth()));
+        }
         return list;
     }
+
+    @Override
+    public void exportExcel(ProductBomDetailSelectDto dto, HttpServletResponse httpServletResponse) {
+        IWrapper wrapper = getWrapper();
+        List<ProductBomDetailVo> list = getList(wrapper);
+        List<ProductBomDetailExcelBo> stockExcelBos = BeanUtil.copyToList(list, ProductBomDetailExcelBo.class);
+        ExcelUtil.export(httpServletResponse, stockExcelBos, ProductBomDetailExcelBo.class);
+    }
+
+
 }

+ 1 - 0
hx-item/src/main/resources/mapper/product/ProductBomDetailMapper.xml

@@ -8,6 +8,7 @@
                pp.`code` AS materialCode
         FROM product_bom_detail pbd
                  LEFT JOIN production_processes pp ON pbd.processes_id = pp.id or pbd.material_id = pp.id
+                 join product_info pi on pbd.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
 </mapper>