Merge branch 'technology/rakor-w3' into technology-init-lhj1119
This commit is contained in:
commit
7723bfea96
|
|
@ -123,7 +123,11 @@
|
|||
<version>2.2.8</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.idev.excel</groupId>
|
||||
<artifactId>fastexcel</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.nflg.product.technology.pojo.query.MaterialVersionCostQuery;
|
|||
import com.nflg.product.technology.pojo.query.SaveCostQuery;
|
||||
import com.nflg.product.technology.pojo.vo.*;
|
||||
import com.nflg.product.technology.service.ProductCostAnalysisService;
|
||||
import com.nflg.product.technology.util.ExcelUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import nflg.product.common.vo.ResultVO;
|
||||
|
|
@ -12,11 +13,14 @@ import org.springframework.validation.annotation.Validated;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -45,18 +49,78 @@ public class ProductCostAnalysisApi extends BaseApi {
|
|||
return ResultVO.success(productCostAnalysisService.getHighValuePurchasedParts(materialNo, price));
|
||||
}
|
||||
|
||||
@GetMapping("exportHighValuePurchasedParts")
|
||||
@ApiOperation("导出高价值外购件")
|
||||
public void exportHighValuePurchasedParts(HttpServletResponse response
|
||||
, @Validated @RequestParam @NotBlank String materialNo
|
||||
, @Valid @RequestParam @Min(value = 0, message = "价格应大于等于0") BigDecimal price) throws IOException {
|
||||
HighValuePurchasedPartsVO vo = productCostAnalysisService.getHighValuePurchasedParts(materialNo, price);
|
||||
//HighValuePurchasedPartsVO vo = new HighValuePurchasedPartsVO();
|
||||
//MaterialCostVO cost = new MaterialCostVO()
|
||||
// .setMaterialNo("1100003735")
|
||||
// .setPrice(new BigDecimal("5044.25"))
|
||||
// .setNum(new BigDecimal("10000"))
|
||||
// .setTotalPrice(new BigDecimal("18437.25"))
|
||||
// .setMaterialDesc("梅花弹性联轴器 ROTEX 90 ST 98SHA 1B-32/1B-60 图号727576-0")
|
||||
// .setMaterialCategoryName("梅花弹性联轴器")
|
||||
// .setMaterialUnit("SET")
|
||||
// .setInventory(new BigDecimal("100000"))
|
||||
// .setLeadTime("100");
|
||||
//vo.getCosts().add(cost);
|
||||
|
||||
ExcelUtil.export(response, vo.getCosts(), MaterialCostVO.class, materialNo + "高价值外购件", "价格高于" + price);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("getBomCostSingleLayer")
|
||||
@ApiOperation("获取Bom组件成本(单层)")
|
||||
public ResultVO<List<BomCostMultilayerVO>> getBomCostSingleLayer(@Valid @RequestParam @NotBlank String materialNo) {
|
||||
public ResultVO<List<BomCostSingleLayerVO>> getBomCostSingleLayer(@Valid @RequestParam @NotBlank String materialNo) {
|
||||
return ResultVO.success(productCostAnalysisService.getBomCostSingleLayer(materialNo));
|
||||
}
|
||||
|
||||
@GetMapping("exportBomCostSingleLayer")
|
||||
@ApiOperation("导出Bom组件成本(单层)")
|
||||
public void exportBomCostSingleLayer(HttpServletResponse response
|
||||
, @Valid @RequestParam @NotBlank String materialNo) throws IOException {
|
||||
List<BomCostSingleLayerVO> vos = productCostAnalysisService.getBomCostSingleLayer(materialNo);
|
||||
//List<BomCostSingleLayerVO> vos = new ArrayList<>();
|
||||
//BomCostSingleLayerVO vo = new BomCostMultilayerVO()
|
||||
// .setMaterialNo("2100032594")
|
||||
// .setMaterialDesc("六角头螺栓 M20×55 GB/T 5783 全螺纹 8.8级 镀锌 耐96H盐雾")
|
||||
// .setMaterialCategoryName("梅花弹性联轴器")
|
||||
// .setMaterialUnit("SET")
|
||||
// .setPrice(new BigDecimal("1000.00"))
|
||||
// .setNum(new BigDecimal(100))
|
||||
// .setTotalNum(new BigDecimal("10000"))
|
||||
// .setTotalCost(new BigDecimal("2299.3814"));
|
||||
//vos.add(vo);
|
||||
|
||||
ExcelUtil.export(response, vos, BomCostSingleLayerVO.class, materialNo + "组件成本(单层)", materialNo);
|
||||
}
|
||||
|
||||
@GetMapping("getBomCostMultilayer")
|
||||
@ApiOperation("获取Bom组件成本(多层)")
|
||||
public ResultVO<BomCostMultilayerVO> getBomCostMultilayer(@Valid @RequestParam @NotBlank String materialNo) {
|
||||
return ResultVO.success(productCostAnalysisService.getBomCostMultilayer(materialNo));
|
||||
}
|
||||
|
||||
@GetMapping("exportBomCostMultilayer")
|
||||
@ApiOperation("导出Bom组件成本(多层)")
|
||||
public void exportBomCostMultilayer(HttpServletResponse response
|
||||
, @Valid @RequestParam @NotBlank String materialNo) throws IOException {
|
||||
BomCostMultilayerVO vo = productCostAnalysisService.getBomCostMultilayer(materialNo);
|
||||
List<BomCostMultilayerVO> vos = new ArrayList<>();
|
||||
vos.add(vo);
|
||||
vo.getChildren().forEach(c -> add(c, vos));
|
||||
|
||||
ExcelUtil.export(response, vos, BomCostMultilayerVO.class, materialNo + "组件成本(多层)", materialNo);
|
||||
}
|
||||
|
||||
private void add(BomCostMultilayerVO child, List<BomCostMultilayerVO> vos) {
|
||||
vos.add(child);
|
||||
child.getChildren().forEach(c -> add(c, vos));
|
||||
}
|
||||
|
||||
@GetMapping("getMaterialComposition")
|
||||
@ApiOperation("查询材料组成分析(物料属性)")
|
||||
public ResultVO<MaterialCompositionVO> getMaterialComposition(@Valid @RequestParam @NotBlank String materialNo) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
package com.nflg.product.technology.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.nflg.product.base.core.config.BigDecimalSerializer;
|
||||
import cn.idev.excel.annotation.ExcelIgnore;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import cn.idev.excel.annotation.write.style.*;
|
||||
import cn.idev.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import cn.idev.excel.enums.poi.VerticalAlignmentEnum;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -20,68 +22,20 @@ import java.util.List;
|
|||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "com-nflg-product-technology-pojo-vo-BomCostMultilayerVO")
|
||||
public class BomCostMultilayerVO implements Serializable {
|
||||
@HeadStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.RIGHT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@HeadFontStyle(fontHeightInPoints = 10)
|
||||
@ContentFontStyle(fontHeightInPoints = 10)
|
||||
public class BomCostMultilayerVO extends BomCostSingleLayerVO implements Serializable {
|
||||
|
||||
@ApiModelProperty("物料编码")
|
||||
private String materialNo;
|
||||
|
||||
@ApiModelProperty("物料描述")
|
||||
private String materialDesc;
|
||||
|
||||
@ApiModelProperty("物料类别")
|
||||
private String materialCategoryName;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
private String materialUnit;
|
||||
|
||||
@ApiModelProperty("单件成本")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal price;
|
||||
|
||||
@ApiModelProperty("单层数量")
|
||||
private BigDecimal num;
|
||||
|
||||
@ApiModelProperty("累乘数量")
|
||||
private BigDecimal totalNum;
|
||||
|
||||
@ApiModelProperty("总成本")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal totalCost;
|
||||
|
||||
@ApiModelProperty("单件材料成本")
|
||||
private String materialCost = "-";
|
||||
|
||||
@ApiModelProperty("材料成本")
|
||||
private String totalMaterialCost = "-";
|
||||
|
||||
@ApiModelProperty("单件油漆成本")
|
||||
private String paintCost = "-";
|
||||
|
||||
@ApiModelProperty("油漆成本")
|
||||
private String totalPaintCost = "-";
|
||||
|
||||
@ApiModelProperty("单件标准人工工资")
|
||||
private String directManualProductionCost = "-";
|
||||
|
||||
@ApiModelProperty("标准人工工资")
|
||||
private String totalDirectManualProductionCost = "-";
|
||||
|
||||
@ApiModelProperty("单件辅助费用")
|
||||
private String auxiliaryManufacturingCost = "-";
|
||||
|
||||
@ApiModelProperty("辅助费用")
|
||||
private String totalAuxiliaryManufacturingCost = "-";
|
||||
@ApiModelProperty("层级")
|
||||
@JsonIgnore
|
||||
@ExcelProperty(value = "层级", index = 0)
|
||||
@ColumnWidth(5)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private Integer level;
|
||||
|
||||
@ApiModelProperty("子物料列表")
|
||||
@ExcelIgnore
|
||||
private List<BomCostMultilayerVO> children = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("物料行id")
|
||||
private Long materialRowId;
|
||||
|
||||
@ApiModelProperty("是否有下级")
|
||||
private boolean hasChildren = false;
|
||||
|
||||
private String relCategoryCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.nflg.product.technology.pojo.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnore;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import cn.idev.excel.annotation.format.NumberFormat;
|
||||
import cn.idev.excel.annotation.write.style.*;
|
||||
import cn.idev.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import cn.idev.excel.enums.poi.VerticalAlignmentEnum;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.nflg.product.base.core.config.BigDecimalSerializer;
|
||||
|
|
@ -18,53 +24,110 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "com-nflg-product-technology-pojo-vo-BomCostSingleLayerVO")
|
||||
@HeadStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.RIGHT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@HeadFontStyle(fontHeightInPoints = 10)
|
||||
@ContentFontStyle(fontHeightInPoints = 10)
|
||||
public class BomCostSingleLayerVO implements Serializable {
|
||||
|
||||
@ApiModelProperty("物料编码")
|
||||
@ExcelProperty("物料编码")
|
||||
@ColumnWidth(15)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialNo;
|
||||
|
||||
@ApiModelProperty("单价")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal price;
|
||||
|
||||
@ApiModelProperty("数量")
|
||||
private BigDecimal num;
|
||||
|
||||
@ApiModelProperty("总价格")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
@ApiModelProperty("物料描述")
|
||||
@ExcelProperty("物料描述")
|
||||
@ColumnWidth(50)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialDesc;
|
||||
|
||||
@ApiModelProperty("物料类别")
|
||||
@ExcelProperty("物料类别")
|
||||
@ColumnWidth(20)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialCategoryName;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
@ExcelProperty("单位")
|
||||
@ColumnWidth(5)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialUnit;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private String version;
|
||||
|
||||
@ApiModelProperty("材料总价")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@ApiModelProperty("单件成本")
|
||||
@JsonFormat(pattern = "0.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal materialTotalPrice;
|
||||
@ExcelProperty("单件成本")
|
||||
@ColumnWidth(10)
|
||||
@NumberFormat("0.##")
|
||||
private BigDecimal price;
|
||||
|
||||
@ApiModelProperty("直接人工费用")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal laborCosts;
|
||||
@ApiModelProperty("单层数量")
|
||||
@ExcelProperty("单层数量")
|
||||
@ColumnWidth(10)
|
||||
private BigDecimal num;
|
||||
|
||||
@ApiModelProperty("辅助制造成本")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@ApiModelProperty("累乘数量")
|
||||
@ExcelProperty("累乘数量")
|
||||
@ColumnWidth(10)
|
||||
private BigDecimal totalNum;
|
||||
|
||||
@ApiModelProperty("总成本")
|
||||
@JsonFormat(pattern = "0.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
private BigDecimal auxiliaryManufacturingCost;
|
||||
@ExcelProperty("总成本")
|
||||
@ColumnWidth(10)
|
||||
@NumberFormat("0.##")
|
||||
private BigDecimal totalCost;
|
||||
|
||||
@ApiModelProperty("单件材料成本")
|
||||
@ExcelProperty("单件材料成本")
|
||||
@ColumnWidth(10)
|
||||
private String materialCost = "-";
|
||||
|
||||
@ApiModelProperty("材料成本")
|
||||
@ExcelProperty("材料成本")
|
||||
@ColumnWidth(10)
|
||||
private String totalMaterialCost = "-";
|
||||
|
||||
@ApiModelProperty("单件油漆成本")
|
||||
@ExcelProperty("单件油漆成本")
|
||||
@ColumnWidth(10)
|
||||
private String paintCost = "-";
|
||||
|
||||
@ApiModelProperty("油漆成本")
|
||||
@ExcelProperty("油漆成本")
|
||||
@ColumnWidth(10)
|
||||
private String totalPaintCost = "-";
|
||||
|
||||
@ApiModelProperty("单件标准人工工资")
|
||||
@ExcelProperty("单件标准人工工资")
|
||||
@ColumnWidth(10)
|
||||
private String directManualProductionCost = "-";
|
||||
|
||||
@ApiModelProperty("标准人工工资")
|
||||
@ExcelProperty("标准人工工资")
|
||||
@ColumnWidth(10)
|
||||
private String totalDirectManualProductionCost = "-";
|
||||
|
||||
@ApiModelProperty("单件辅助费用")
|
||||
@ExcelProperty("单件辅助费用")
|
||||
@ColumnWidth(10)
|
||||
private String auxiliaryManufacturingCost = "-";
|
||||
|
||||
@ApiModelProperty("辅助费用")
|
||||
@ExcelProperty("辅助费用")
|
||||
@ColumnWidth(10)
|
||||
private String totalAuxiliaryManufacturingCost = "-";
|
||||
|
||||
@ApiModelProperty("物料行id")
|
||||
@ExcelIgnore
|
||||
private Long materialRowId;
|
||||
|
||||
@ApiModelProperty("是否有下级")
|
||||
@ExcelIgnore
|
||||
private boolean hasChildren = false;
|
||||
|
||||
@ExcelIgnore
|
||||
private String relCategoryCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.nflg.product.technology.pojo.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnore;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import cn.idev.excel.annotation.format.NumberFormat;
|
||||
import cn.idev.excel.annotation.write.style.*;
|
||||
import cn.idev.excel.enums.poi.HorizontalAlignmentEnum;
|
||||
import cn.idev.excel.enums.poi.VerticalAlignmentEnum;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
|
|
@ -19,22 +25,37 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "com-nflg-product-technology-pojo-vo-MaterialCostVO")
|
||||
@HeadStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.RIGHT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
@HeadFontStyle(fontHeightInPoints = 10)
|
||||
@ContentFontStyle(fontHeightInPoints = 10)
|
||||
public class MaterialCostVO implements Serializable {
|
||||
|
||||
@ApiModelProperty("物料编号")
|
||||
@ExcelProperty("物料编号")
|
||||
@ColumnWidth(15)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialNo;
|
||||
|
||||
@ApiModelProperty("单价")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
@ExcelProperty("单价")
|
||||
@ColumnWidth(10)
|
||||
@NumberFormat("#.##")
|
||||
private BigDecimal price = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty("数量")
|
||||
@ExcelProperty("数量")
|
||||
@ColumnWidth(10)
|
||||
private BigDecimal num = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty("总价格")
|
||||
@JsonFormat(pattern = "#.##")
|
||||
@JsonFormat(pattern = "0.##")
|
||||
@JsonSerialize(using = BigDecimalSerializer.class)
|
||||
@ExcelProperty("总价格")
|
||||
@ColumnWidth(10)
|
||||
@NumberFormat("0.##")
|
||||
private BigDecimal totalPrice = BigDecimal.ZERO;
|
||||
|
||||
//public BigDecimal getTotalPrice() {
|
||||
|
|
@ -42,31 +63,48 @@ public class MaterialCostVO implements Serializable {
|
|||
//}
|
||||
|
||||
@ApiModelProperty("物料描述")
|
||||
@ExcelProperty("物料描述")
|
||||
@ColumnWidth(60)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialDesc;
|
||||
|
||||
@ApiModelProperty("物料类别")
|
||||
@ExcelProperty("物料类别")
|
||||
@ColumnWidth(30)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialCategoryName;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
@ExcelProperty("单位")
|
||||
@ColumnWidth(10)
|
||||
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
|
||||
private String materialUnit;
|
||||
|
||||
@ApiModelProperty("库存")
|
||||
@ExcelProperty("库存")
|
||||
@ColumnWidth(10)
|
||||
private BigDecimal inventory = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty("交期")
|
||||
@ExcelProperty("交期")
|
||||
@ColumnWidth(10)
|
||||
private String leadTime;
|
||||
|
||||
@ApiModelProperty("物料行id")
|
||||
@ExcelIgnore
|
||||
private Long materialRowId;
|
||||
|
||||
@ExcelIgnore
|
||||
private String relCategoryCode;
|
||||
|
||||
/**
|
||||
* 是否外购件
|
||||
*/
|
||||
@JsonIgnore
|
||||
@ExcelIgnore
|
||||
private boolean isPurchasedParts;
|
||||
|
||||
@JsonIgnore
|
||||
@ExcelIgnore
|
||||
private String categoryCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.product.technology.service;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.product.technology.constant.BomConstant;
|
||||
import com.nflg.product.technology.pojo.dto.EBomCostCacheDTO;
|
||||
|
|
@ -47,7 +48,7 @@ public class ProductCostAnalysisService {
|
|||
@Resource
|
||||
private BomCostService bomCostService;
|
||||
|
||||
public List<BomCostMultilayerVO> getBomCostSingleLayer(String materialNo) {
|
||||
public List<BomCostSingleLayerVO> getBomCostSingleLayer(String materialNo) {
|
||||
List<EBomCostCacheDTO> datas = bomCostCalculateService.calculate(materialNo);
|
||||
if (CollectionUtil.isEmpty(datas)) {
|
||||
return Collections.emptyList();
|
||||
|
|
@ -58,7 +59,7 @@ public class ProductCostAnalysisService {
|
|||
vo.setTotalNum(BigDecimal.ONE);
|
||||
vo.setHasChildren(true);
|
||||
buildMultilayerChildren(parent.getRowId(), vo, materials, datas, false);
|
||||
return vo.getChildren();
|
||||
return Convert.toList(BomCostSingleLayerVO.class, vo.getChildren());
|
||||
}
|
||||
|
||||
public BomCostMultilayerVO getBomCostMultilayer(String materialNo) {
|
||||
|
|
@ -71,6 +72,7 @@ public class ProductCostAnalysisService {
|
|||
BomCostMultilayerVO vo = new BomCostMultilayerVO();
|
||||
vo.setMaterialNo(parent.getMaterialNo());
|
||||
vo.setHasChildren(true);
|
||||
vo.setLevel(1);
|
||||
EBomDTO pm = materials.stream().filter(m -> StrUtil.equals(m.getMaterialNo(), parent.getMaterialNo())).findFirst().orElse(null);
|
||||
if (Objects.nonNull(pm)) {
|
||||
vo.setMaterialDesc(pm.getMaterialDesc());
|
||||
|
|
@ -104,6 +106,9 @@ public class ProductCostAnalysisService {
|
|||
if (!StrUtil.equals(child.getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) {
|
||||
BomCostMultilayerVO cvo = new BomCostMultilayerVO();
|
||||
cvo.setMaterialNo(child.getMaterialNo());
|
||||
if (Objects.nonNull(pvo.getLevel())) {
|
||||
cvo.setLevel(pvo.getLevel() + 1);
|
||||
}
|
||||
EBomDTO cpm = materials.stream().filter(m -> StrUtil.equals(m.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null);
|
||||
if (Objects.nonNull(cpm)) {
|
||||
cvo.setMaterialDesc(cpm.getMaterialDesc());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.nflg.product.technology.util;
|
||||
|
||||
import cn.idev.excel.FastExcel;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.List;
|
||||
|
||||
public class ExcelUtil {
|
||||
|
||||
public static <T> void export(HttpServletResponse response, List<T> data, Class<?> clazz, String fileName, String sheetName) throws IOException {
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
|
||||
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename*=utf-8''" + fileName + ".xlsx");
|
||||
FastExcel.write(response.getOutputStream(), clazz)
|
||||
.sheet(sheetName)
|
||||
.doWrite(data);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue