出库单导入;

This commit is contained in:
王奎兴
2026-01-22 14:10:02 +08:00
parent d9d75bd0cf
commit e1411e1fe7
6 changed files with 50 additions and 40 deletions
@@ -72,14 +72,14 @@ public class StockOutOrderApplicationService {
public List<StockOutOrderPO> queryList(StockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
/*if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
}*/
return stockOutOrderDomainService.queryList(stockOutOrderDO);
}
@@ -89,13 +89,13 @@ public class StockOutOrderApplicationService {
*/
public Boolean insert(StockOutOrderDO stockOutOrderDO) {
//设置仓库
setWarehouseInfo(stockOutOrderDO);
//setWarehouseInfo(stockOutOrderDO);
//设置货主信息
shipperParam(stockOutOrderDO);
//shipperParam(stockOutOrderDO);
//设置客户信息
customerParam(stockOutOrderDO);
//customerParam(stockOutOrderDO);
//设置数据字典键值
setDataDict(stockOutOrderDO);
//setDataDict(stockOutOrderDO);
return stockOutOrderDomainService.insert(stockOutOrderDO);
}
@@ -1,6 +1,7 @@
package com.mhd.wms.domain.stockOutOrder.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
@@ -265,6 +266,7 @@ public class StockOutOrder extends BaseVOEntity {
@ApiModelProperty("to")
@Excel(name = "to")
@TableField(value = "\"TO\"")
private String to;
@ApiModelProperty("联系人")
@@ -4,8 +4,11 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@@ -18,6 +21,10 @@ import java.util.Map;
@Service
public class ExcelParseService {
@Autowired
private IStockOutOrderService stockOutOrderService;
@Autowired
private StockOutOrderApplicationService stockOutOrderApplicationService;
/**
* 解析出仓委托单Excel
* @param file 上传的Excel文件
@@ -67,7 +74,7 @@ public class ExcelParseService {
// 3. 组装完整的出仓委托单
StockOutOrderDO stockOutOrder = headerListener.getStockOutOrder();
stockOutOrder.setMaterialDetailList(itemListener.getItemList());
stockOutOrderApplicationService.insert(stockOutOrder);
return stockOutOrder;
}
}
@@ -52,7 +52,7 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
// 将LocalDate转换为Date
LocalDate localDate = parseDate(getStringValue(rowData[2]));
if (localDate != null) {
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date date = Date.from(localDate.atStartOfDay(ZoneId.of("UTC")).toInstant());
stockOutOrder.setOutboundDate(date);
}
stockOutOrder.setFax(getStringValue(rowData[4]));
@@ -65,7 +65,7 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
stockOutOrder.setCustomsDeclarerInfo(getStringValue(rowData[11]));
LocalDate CompleteTime = parseDate(getStringValue(rowData[15]));
if (CompleteTime != null) {
Date date = Date.from(CompleteTime.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date date = Date.from(CompleteTime.atStartOfDay(ZoneId.of("UTC")).toInstant());
stockOutOrder.setCompleteTime(date);
}
break;
@@ -78,7 +78,7 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
case 9: // 第10行:下单日期、起运国
LocalDate orderDate = parseDate(getStringValue(rowData[2]));
if (orderDate != null) {
Date date = Date.from(orderDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date date = Date.from(orderDate.atStartOfDay(ZoneId.of("UTC")).toInstant());
stockOutOrder.setOrderDate(date);
}
stockOutOrder.setDepartureArrivalCountry(getStringValue(rowData[4]));
@@ -42,29 +42,30 @@ public class ItemListener extends AnalysisEventListener<Map<Integer, Object>> {
//(KG)" 总毛重 (KG) "总体积
//(CBM)" 总面积(SQM) Batch Ref NO's Sheet Ref NO's 原产国 箱号/卡板号 总价 币制 备注
item.setCommodityName(getStringValue(rowData[1]));
item.setSpecificationModel(getStringValue(rowData[2]));
item.setSkucode(getStringValue(rowData[3]));
item.setInvoiceNo(getStringValue(rowData[4]));
item.setDeclareQuantity(parseBigDecimal(rowData[5]).doubleValue());
item.setDeclareUnit(getStringValue(rowData[6]));
item.setLiter(getStringValue(rowData[7]));
item.setCaseCount(parseInteger(rowData[8]).doubleValue());
item.setPieceCount(parseInteger(rowData[9]).doubleValue());
item.setSize(getStringValue(rowData[10]));
item.setMaterialNo(getStringValue(rowData[2]));
item.setSpecificationModel(getStringValue(rowData[3]));
item.setSkucode(getStringValue(rowData[4]));
item.setInvoiceNo(getStringValue(rowData[5]));
item.setDeclareQuantity(parseBigDecimal(rowData[6]).doubleValue());
item.setDeclareUnit(getStringValue(rowData[7]));
item.setLiter(getStringValue(rowData[8]));
item.setCaseCount(parseInteger(rowData[9]).doubleValue());
item.setPieceCount(parseInteger(rowData[10]).doubleValue());
item.setSize(getStringValue(rowData[11]));
//仓库数量 出库数量?
item.setOutboundQuantity(parseBigDecimal(rowData[11]).doubleValue());
item.setTotalNetWeight(parseBigDecimal(rowData[12]).doubleValue());
item.setTotalGrossWeight(parseBigDecimal(rowData[13]).doubleValue());
item.setTotalVolume(parseBigDecimal(rowData[14]).doubleValue());
item.setTotalArea(parseBigDecimal(rowData[15]).doubleValue());
item.setBatchRefNo(getStringValue(rowData[16]));
item.setSheetRefNo(getStringValue(rowData[17]));
item.setCountryOfOrigin(getStringValue(rowData[18]));
item.setOutboundQuantity(parseBigDecimal(rowData[12]).doubleValue());
item.setTotalNetWeight(parseBigDecimal(rowData[13]).doubleValue());
item.setTotalGrossWeight(parseBigDecimal(rowData[14]).doubleValue());
item.setTotalVolume(parseBigDecimal(rowData[15]).doubleValue());
item.setTotalArea(parseBigDecimal(rowData[16]).doubleValue());
item.setBatchRefNo(getStringValue(rowData[17]));
item.setSheetRefNo(getStringValue(rowData[18]));
item.setCountryOfOrigin(getStringValue(rowData[19]));
item.setCasePalletNo(getStringValue(rowData[19]));
item.setTotalAmount(parseBigDecimal(rowData[20]).doubleValue());
item.setCurrency(getStringValue(rowData[21]));
item.setRemark(getStringValue(rowData[22]));
item.setCasePalletNo(getStringValue(rowData[20]));
item.setTotalAmount(parseBigDecimal(rowData[21]).doubleValue());
item.setCurrency(getStringValue(rowData[22]));
item.setRemark(getStringValue(rowData[23]));
itemList.add(item);
}
@@ -124,18 +124,18 @@ public class StockOutOrderDomainService {
public Boolean insert(StockOutOrderDO stockOutOrderDO) {
stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK"));
//设置物料信息
setMaterialDetailInfo(stockOutOrderDO);
//setMaterialDetailInfo(stockOutOrderDO);
//统计种类
stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
//stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
//统计总数量
BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderDO.setQuantity(quantity);
//BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
//stockOutOrderDO.setQuantity(quantity);
//统计总重量
BigDecimal weightLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderDO.setWeightLimit(weightLimit);
// BigDecimal weightLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockOutOrderDO.setWeightLimit(weightLimit);
//统计总体积
BigDecimal volumeLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderDO.setVolumeLimit(volumeLimit);
//BigDecimal volumeLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
//stockOutOrderDO.setVolumeLimit(volumeLimit);
stockOutOrderService.insert(stockOutOrderDO);
return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList());
}
@@ -998,4 +998,4 @@ public class StockOutOrderDomainService {
return 3;
}
}
}
}