出库单导入;

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