Commit 09e16c02 authored by honghy's avatar honghy

空运已装单添加底色

parent c0e65d3b
......@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.ecw.service.cabinet.CabinetService;
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
import cn.iocoder.yudao.module.infra.service.file.FileService;
import cn.iocoder.yudao.module.order.dal.dataobject.order.OrderDO;
import cn.iocoder.yudao.module.order.dal.dataobject.orderItem.OrderItemDO;
import cn.iocoder.yudao.module.order.dto.OrderBackInfoDto;
import cn.iocoder.yudao.module.order.service.order.*;
import cn.iocoder.yudao.module.order.service.orderWarehouseIn.OrderWarehouseInService;
......@@ -32,6 +33,7 @@ import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxMergePkgDO;
import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxPkgOrderDO;
import cn.iocoder.yudao.module.shipment.dto.AirLoadDto;
import cn.iocoder.yudao.module.shipment.dto.PreloadDto;
import cn.iocoder.yudao.module.shipment.enums.CustomsTypeEnum;
import cn.iocoder.yudao.module.shipment.service.box.BoxService;
import cn.iocoder.yudao.module.shipment.service.boxApproval.BoxApprovalService;
import cn.iocoder.yudao.module.shipment.service.boxMergePkg.BoxMergePkgService;
......@@ -50,6 +52,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
......@@ -222,6 +225,7 @@ public class ShipmentAirLoadExcelExportListener {
int totalNum = 0;
BigDecimal totalVolume = new BigDecimal(0);
BigDecimal totalWeight = new BigDecimal(0);
BigDecimal totalWorth = new BigDecimal(0);
Map<String,Integer> numMap = new HashMap();
List<AirLoadDto> preloadDtoList = new ArrayList<>();
......@@ -230,8 +234,10 @@ public class ShipmentAirLoadExcelExportListener {
List<Integer> mergeCountList = new ArrayList();
List<Integer> colorRowList = new ArrayList<>();
List<Integer> colorRowList2 = new ArrayList<>();
AtomicInteger colorRowNum = new AtomicInteger(5);
Map<String,Integer> colorMap = new HashMap<>();
Map<String,Integer> colorMap2 = new HashMap<>();
Map<String,Integer> mergePkgCountMap = new LinkedHashMap<>();
int colorIndex = 0;
//以订单ID分组
......@@ -240,7 +246,11 @@ public class ShipmentAirLoadExcelExportListener {
StringUtils.isNotBlank(item.getWarehouseInInfo()))
.collect(Collectors.groupingBy(BoxPreloadGoodsBackVO::getOrderId,
LinkedHashMap::new,Collectors.toList()));
List<ProductAttrDO> productAttrDOList = productAttrService.getProductAttrList();
Map<String, String> idNameMap = productAttrDOList.stream()
.collect(Collectors.toMap(attr -> String.valueOf(attr.getId()), ProductAttrDO::getAttrName));
for (Map.Entry<Long, List<BoxPreloadGoodsBackVO>> entry : orderMap.entrySet()) {
boolean prodAttrTag = false;
Long orderId = entry.getKey();
Long pkgId = entry.getValue().get(0).getPkgId();
OrderBackInfoDto orderInfo = orderQueryService.info(orderId);
......@@ -249,6 +259,59 @@ public class ShipmentAirLoadExcelExportListener {
orderWarehouseInService.getOrderWarehouseInListOrderByInTime(orderId);
for (OrderWarehouseInBackItemVO item : orderWarehouseInBackItemVOS) {
List<BoxPreloadGoodsBackVO> boxPreload = entry.getValue();
List<OrderItemDO> orderItems = boxPreload.stream().map(a -> orderItemService.getOrderItem(a.getOrderItemId())).collect(Collectors.toList());
for (OrderItemDO orderItem : orderItems) {
String attrNames = getAttrNameByIds(orderItem.getProdAttrIds(), idNameMap);
if (attrNames.contains("危险品")){
prodAttrTag = true;
}
}
AirLoadDto preloadDto = new AirLoadDto();
preloadDto.setProdAttr(getAttrNameByIds(item.getProdAttrIds(),idNameMap));
// 当订单的报关方式=混合报关,订单的底色为蓝色,#0000FF
// 当订单的报关方式=自单代报,订单的底色为橙色, #FF7F00
// 当订单的商品包含了特性=危险品DG,订单的底色为黄色, #FFFF00
// 当订单的商品包含了特性=危险品DG&订单的报关方式=自单代报/混合报关,底色为绿色,#00FF00
if(orderInfo.getCustomsType()!=null){
preloadDto.setCustomsType(DictFrameworkUtils.getDictDataFromCache("customs_type",orderInfo.getCustomsType()+"").getLabel());
if (CustomsTypeEnum.CUSTOMS_TYPE_3.getValue().equals(orderInfo.getCustomsType())){
Integer color = Integer.valueOf(IndexedColors.ROYAL_BLUE.index);
if (prodAttrTag){
color=Integer.valueOf(IndexedColors.ROYAL_BLUE.index);
}
int andIncrement2 = colorRowNum.get();
colorMap2.put(String.valueOf(andIncrement2),Integer.valueOf(color));
colorMap.put(String.valueOf(andIncrement2),Integer.valueOf(color));
colorRowList.add(andIncrement2);
colorRowList2.add(andIncrement2);
}else if (CustomsTypeEnum.CUSTOMS_TYPE_2.getValue().equals(orderInfo.getCustomsType())){
Integer color = Integer.valueOf(IndexedColors.ORANGE.index);
if (prodAttrTag){
color=Integer.valueOf(IndexedColors.GREEN.index);
}
int andIncrement2 = colorRowNum.get();
colorMap2.put(String.valueOf(andIncrement2),Integer.valueOf(color));
colorMap.put(String.valueOf(andIncrement2),Integer.valueOf(color));
colorRowList.add(andIncrement2);
colorRowList2.add(andIncrement2);
}else {
if (prodAttrTag){
int andIncrement2 = colorRowNum.get();
colorMap2.put(String.valueOf(andIncrement2),Integer.valueOf(IndexedColors.YELLOW.index));
colorMap.put(String.valueOf(andIncrement2),Integer.valueOf(IndexedColors.YELLOW.index));
colorRowList.add(andIncrement2);
colorRowList2.add(andIncrement2);
}else if (prodAttrTag){
int andIncrement2 = colorRowNum.get();
colorMap2.put(String.valueOf(andIncrement2),Integer.valueOf(IndexedColors.YELLOW.index));
colorMap.put(String.valueOf(andIncrement2),Integer.valueOf(IndexedColors.YELLOW.index));
colorRowList.add(andIncrement2);
colorRowList2.add(andIncrement2);
}
}
}
int andIncrement = colorRowNum.getAndIncrement();
if (StringUtils.isNotBlank(item.getOrderWarehouseInDetails())) {
JSONArray jsonArray = JSONArray.parseArray(item.getOrderWarehouseInDetails());
......@@ -258,7 +321,6 @@ public class ShipmentAirLoadExcelExportListener {
}
}
int mergeCount = 1;
AirLoadDto preloadDto = new AirLoadDto();
if (numMap.get(orderInfo.getOrderNo()) != null) {
preloadDto.setId(String.valueOf(numMap.get(orderInfo.getOrderNo())));
} else {
......@@ -276,15 +338,10 @@ public class ShipmentAirLoadExcelExportListener {
if(productBrank !=null && productBrank.getFiling()!=null){
preloadDto.setProductRecord(productBrank.getFiling().equals("0")? "N":"Y");
}
List<ProductAttrDO> productAttrDOList = productAttrService.getProductAttrList();
Map<String, String> idNameMap = productAttrDOList.stream()
.collect(Collectors.toMap(attr -> String.valueOf(attr.getId()), ProductAttrDO::getAttrName));
preloadDto.setProdAttr(getAttrNameByIds(item.getProdAttrIds(),idNameMap));
if(orderInfo.getCustomsType()!=null){
preloadDto.setCustomsType(DictFrameworkUtils.getDictDataFromCache("customs_type",orderInfo.getCustomsType()+"").getLabel());
}
preloadDto.setSumNum(item.getCartonsNum());
preloadDto.setPackageType(DictFrameworkUtils.getDictDataFromCache("packaging_type",item.getUnit()).getLabel());
preloadDto.setPackageType(DictFrameworkUtils.getDictDataFromCache("packaging_type",item.getUnit()).getLabel()+"/"+DictFrameworkUtils.getDictDataFromCache("packaging_type", item.getUnit()).getLabelEn());
preloadDto.setBoxGauge(item.getBoxGauge());
preloadDto.setSumVolume(item.getVolume());
preloadDto.setSumWeight(item.getWeight());
......@@ -327,8 +384,9 @@ public class ShipmentAirLoadExcelExportListener {
preloadDto.setMaterial(DictFrameworkUtils.getDictDataFromCache("product_material",item.getMaterial()+"").getLabel());
}
preloadDto.setUsageIds(getUsageMsg(item.getUsageIds()));
BigDecimal totalWorth = orderInfo.getOrderItemVOList().stream().map(OrderItemBackVO::getWorth).reduce(BigDecimal.ZERO, BigDecimal::add);
preloadDto.setWorth(totalWorth);
BigDecimal totalWorth2 = orderInfo.getOrderItemVOList().stream().map(OrderItemBackVO::getWorth).reduce(BigDecimal.ZERO, BigDecimal::add);
totalWorth = totalWorth.add(totalWorth2);
preloadDto.setWorth(totalWorth2);
preloadDto.setTotalVolume(orderDO.getSumVolumeFinishedWarehouseIn().compareTo(BigDecimal.ZERO) == 0 ? orderInfo.getSumVolume():orderDO.getSumVolumeFinishedWarehouseIn());
preloadDto.setTotalWeight(orderDO.getSumWeightFinishedWarehouseIn().compareTo(BigDecimal.ZERO) == 0 ? orderInfo.getSumWeight():orderDO.getSumWeightFinishedWarehouseIn());
preloadDtoList.add(preloadDto);
......@@ -434,7 +492,13 @@ public class ShipmentAirLoadExcelExportListener {
preloadDto.setMergePkgVolume(totalMergeVolume);
preloadDto.setMergePkgWeight(totalMergeWeight);
preloadDto.setMergePkgQua(totalMergeQuality);
preloadDto.setWorth(totalWorth);
preloadDtoList.add(preloadDto);
int andIncrement = colorRowNum.getAndIncrement();
colorMap2.put(String.valueOf(andIncrement),Integer.valueOf(IndexedColors.YELLOW.index));
colorMap.put(String.valueOf(andIncrement),Integer.valueOf(IndexedColors.YELLOW.index));
colorRowList.add(andIncrement);
colorRowList2.add(andIncrement);
allTotalNum = allTotalNum + totalNum;
allTotalVolume = allTotalVolume.add(totalVolume);
allTotalWeight = allTotalWeight.add(totalWeight);
......@@ -449,33 +513,33 @@ public class ShipmentAirLoadExcelExportListener {
// }
List<Integer> mergePkgCountList = mergePkgCountMap.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
WriteTable writeTable = EasyExcel.writerTable(i)
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,0,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,1,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,2,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,0,1,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,1,1,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,2,1,colorMap2))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,3, colorMap))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,4, colorMap))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,5, colorMap))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,6, colorMap))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,7, colorMap))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,8,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,9,2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,10,2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,11,2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,8,1,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,9,2,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,10,2,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,11,2,colorMap2))
// .registerWriteHandler(new CustomCellWriteHandler(colorRowList,11, colorMap))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,12,2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,13,2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,14,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,15,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,16,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,17,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,18,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,mergePkgCountList,19,3))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,12,2,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,13,2,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,14,3,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,15,3,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,16,3,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,17,3,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,18,3,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,mergePkgCountList,19,3,colorMap2))
// .registerWriteHandler(new CustomMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,20,1))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,20, colorMap))
.registerWriteHandler(new CustomCellWriteHandler(colorRowList,21, colorMap))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,22,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,23,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList,null,24,1))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,22,1,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,23,1,colorMap2))
.registerWriteHandler(new CustomAirLoadMergeStrategyNew(preloadDtoList,mergeCountList,colorRowList2,null,24,1,colorMap2))
.automaticMergeHead(true).head(headList).needHead(true).build();
excelWriter.write(preloadDtoList,sheet,writeTable);
}
......
......@@ -250,7 +250,7 @@ public class ShipmentLoadExcelExportListener2 {
if(orderInfo.getCustomsType()!=null){
preloadDto.setCustomsType(DictFrameworkUtils.getDictDataFromCache("customs_type",orderInfo.getCustomsType()+"").getLabel());
if (CustomsTypeEnum.CUSTOMS_TYPE_3.getValue().equals(orderInfo.getCustomsType())){
Integer color = Integer.valueOf(IndexedColors.BLUE1.index);
Integer color = Integer.valueOf(IndexedColors.ROYAL_BLUE.index);
if (prodAttrTag){
color=Integer.valueOf(IndexedColors.ROYAL_BLUE.index);
}
......
package cn.iocoder.yudao.module.shipment.utils;
import cn.iocoder.yudao.module.shipment.dto.AirLoadDto;
import cn.iocoder.yudao.module.shipment.dto.PreloadDto;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.merge.AbstractMergeStrategy;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.util.CollectionUtils;
......@@ -34,8 +35,6 @@ public class CustomAirLoadMergeStrategyNew extends AbstractMergeStrategy {
private List<Integer> mergePkgCountList;
private int mergeType;
/**
......@@ -46,14 +45,31 @@ public class CustomAirLoadMergeStrategyNew extends AbstractMergeStrategy {
// 需要开始合并单元格的首行index
private Integer rowIndex;
private Map<String,Integer> colorMap;
// exportDataList为待合并目标列的值 partMerge为另外一种合并方式计算好的合并行数,mergeType 合并类型 1为订单维度合并 2为入仓记录维度的合并
public CustomAirLoadMergeStrategyNew(List<AirLoadDto> exportDataList, List<Integer> partMergeList, List<Integer> colorRowList,List<Integer> mergePkgCountList, Integer targetColumnIndex, int mergeType) {
public CustomAirLoadMergeStrategyNew(List<AirLoadDto> exportDataList, List<Integer> partMergeList, List<Integer> colorRowList,List<Integer> mergePkgCountList, Integer targetColumnIndex, int mergeType, Map<String,Integer> colorMap) {
this.exportFieldGroupCountList = getGroupCountList(exportDataList,targetColumnIndex);
this.partMergeList = partMergeList;
this.mergeType = mergeType;
this.targetColumnIndex = targetColumnIndex;
this.colorRowList = colorRowList;
this.mergePkgCountList = mergePkgCountList;
this.colorMap = colorMap;
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
if (colorRowList.contains(cell.getRowIndex()) && cell.getColumnIndex() == targetColumnIndex) {
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.fromInt(colorMap.get(String.valueOf(cell.getRowIndex()))).index);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(cellStyle);
}
if (!isHead) {
this.merge(writeSheetHolder.getSheet(), cell, head, relativeRowIndex);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment