出库单导入;

This commit is contained in:
王奎兴
2026-01-22 15:35:22 +08:00
parent e1411e1fe7
commit fa650c7ef7
5 changed files with 287 additions and 21 deletions
@@ -230,4 +230,166 @@ public class OutMaterialDetailPO extends StockOutOrderBaseDO {
@ApiModelProperty("越库类型:1-直接越库 2-分拨越库") @ApiModelProperty("越库类型:1-直接越库 2-分拨越库")
@Excel(name = "越库类型:1-直接越库 2-分拨越库") @Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType; private Long overStockType;
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* 商品SKU码
*/
@ApiModelProperty("商品SKU码")
@Excel(name = "商品SKU码")
private String skucode;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
* 升
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String casePalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private Double declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private Double caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private Double pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private Double outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private Double totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private Double totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private Double totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private Double totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private Double totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
} }
@@ -38,15 +38,15 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
switch (rowNum) { switch (rowNum) {
case 4: // 第5行:to、仓库联系人、车型及车牌、委托编码 case 4: // 第5行:to、仓库联系人、车型及车牌、委托编码
stockOutOrder.setTo(getStringValue(rowData[2])); stockOutOrder.setTo(getStringValue(rowData[2]));
stockOutOrder.setContactPerson(getStringValue(rowData[4])); stockOutOrder.setContactPerson(getStringValue(rowData[5]));
stockOutOrder.setVehicleModelPlate(getStringValue(rowData[11])); stockOutOrder.setVehicleModelPlate(getStringValue(rowData[12]));
stockOutOrder.setEntrustNo(getStringValue(rowData[15])); stockOutOrder.setEntrustNo(getStringValue(rowData[16]));
break; break;
case 5: // 第6行:承运方、tel、柜号、司机签名 case 5: // 第6行:承运方、tel、柜号、司机签名
stockOutOrder.setCarrier(getStringValue(rowData[2])); stockOutOrder.setCarrier(getStringValue(rowData[2]));
stockOutOrder.setTel(getStringValue(rowData[4])); stockOutOrder.setTel(getStringValue(rowData[5]));
stockOutOrder.setContainerNo(getStringValue(rowData[11])); stockOutOrder.setContainerNo(getStringValue(rowData[12]));
stockOutOrder.setDriverSign(getStringValue(rowData[15])); stockOutOrder.setDriverSign(getStringValue(rowData[16]));
break; break;
case 6: // 第7行:出仓日期、fax、运输方式、申报地关区 case 6: // 第7行:出仓日期、fax、运输方式、申报地关区
// 将LocalDate转换为Date // 将LocalDate转换为Date
@@ -55,15 +55,15 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
Date date = Date.from(localDate.atStartOfDay(ZoneId.of("UTC")).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[5]));
stockOutOrder.setTransportModeName(getStringValue(rowData[11])); stockOutOrder.setTransportModeName(getStringValue(rowData[12]));
stockOutOrder.setDeclareCustoms(getStringValue(rowData[15])); stockOutOrder.setDeclareCustoms(getStringValue(rowData[16]));
break; break;
case 7: // 第8行:生产商、客户名称、报关姓名及联系方式、完成时间 case 7: // 第8行:生产商、客户名称、报关姓名及联系方式、完成时间
stockOutOrder.setManufacturer(getStringValue(rowData[2])); stockOutOrder.setManufacturer(getStringValue(rowData[2]));
stockOutOrder.setCustomerName(getStringValue(rowData[4])); stockOutOrder.setCustomerName(getStringValue(rowData[5]));
stockOutOrder.setCustomsDeclarerInfo(getStringValue(rowData[11])); stockOutOrder.setCustomsDeclarerInfo(getStringValue(rowData[12]));
LocalDate CompleteTime = parseDate(getStringValue(rowData[15])); LocalDate CompleteTime = parseDate(getStringValue(rowData[16]));
if (CompleteTime != null) { if (CompleteTime != null) {
Date date = Date.from(CompleteTime.atStartOfDay(ZoneId.of("UTC")).toInstant()); Date date = Date.from(CompleteTime.atStartOfDay(ZoneId.of("UTC")).toInstant());
stockOutOrder.setCompleteTime(date); stockOutOrder.setCompleteTime(date);
@@ -71,9 +71,9 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
break; break;
case 8: // 第9行:监管方式、送货地址、海关是否查验货物、进出境关别 case 8: // 第9行:监管方式、送货地址、海关是否查验货物、进出境关别
stockOutOrder.setSupervisionModeName(getStringValue(rowData[2])); stockOutOrder.setSupervisionModeName(getStringValue(rowData[2]));
stockOutOrder.setDeliveryAddr(getStringValue(rowData[4])); stockOutOrder.setDeliveryAddr(getStringValue(rowData[5]));
stockOutOrder.setCustomsInspectionFlag(getStringValue(rowData[11])); stockOutOrder.setCustomsInspectionFlag(getStringValue(rowData[12]));
stockOutOrder.setEntryExitCustoms(getStringValue(rowData[15])); stockOutOrder.setEntryExitCustoms(getStringValue(rowData[16]));
break; break;
case 9: // 第10行:下单日期、起运国 case 9: // 第10行:下单日期、起运国
LocalDate orderDate = parseDate(getStringValue(rowData[2])); LocalDate orderDate = parseDate(getStringValue(rowData[2]));
@@ -81,7 +81,7 @@ public class HeaderListener extends AnalysisEventListener<Map<Integer, Object>>
Date date = Date.from(orderDate.atStartOfDay(ZoneId.of("UTC")).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[5]));
break; break;
} }
rowNum++; rowNum++;
@@ -49,8 +49,8 @@ public class ItemListener extends AnalysisEventListener<Map<Integer, Object>> {
item.setDeclareQuantity(parseBigDecimal(rowData[6]).doubleValue()); item.setDeclareQuantity(parseBigDecimal(rowData[6]).doubleValue());
item.setDeclareUnit(getStringValue(rowData[7])); item.setDeclareUnit(getStringValue(rowData[7]));
item.setLiter(getStringValue(rowData[8])); item.setLiter(getStringValue(rowData[8]));
item.setCaseCount(parseInteger(rowData[9]).doubleValue()); item.setCaseCount(parseBigDecimal(rowData[9]).doubleValue());
item.setPieceCount(parseInteger(rowData[10]).doubleValue()); item.setPieceCount(parseBigDecimal(rowData[10]).doubleValue());
item.setSize(getStringValue(rowData[11])); item.setSize(getStringValue(rowData[11]));
//仓库数量 出库数量? //仓库数量 出库数量?
item.setOutboundQuantity(parseBigDecimal(rowData[12]).doubleValue()); item.setOutboundQuantity(parseBigDecimal(rowData[12]).doubleValue());
@@ -271,4 +271,107 @@ public class StockOutOrderPO extends BaseVOEntity {
@Excel(name = "越库类型:1-直接越库 2-分拨越库") @Excel(name = "越库类型:1-直接越库 2-分拨越库")
private Long overStockType; private Long overStockType;
@ApiModelProperty("to")
@Excel(name = "to")
private String to;
@ApiModelProperty("联系人")
@Excel(name = "联系人")
private String contactPerson;
@ApiModelProperty("车型及车牌")
@Excel(name = "车型及车牌")
private String vehicleModelPlate;
@ApiModelProperty("委托编号")
@Excel(name = "委托编号")
private String entrustNo;
@ApiModelProperty("Tel")
@Excel(name = "Tel")
private String tel;
@ApiModelProperty("司机签名")
@Excel(name = "司机签名")
private String driverSign;
@ApiModelProperty("Fax")
@Excel(name = "Fax")
private String fax;
@ApiModelProperty("申报地关区")
@Excel(name = "申报地关区")
private String declareCustoms;
@ApiModelProperty("生产商")
@Excel(name = "生产商")
private String manufacturer;
@ApiModelProperty("报关员姓名及联系方式")
@Excel(name = "报关员姓名及联系方式")
private String customsDeclarerInfo;
@ApiModelProperty("送货地址")
@Excel(name = "送货地址")
private String deliveryAddr;
@ApiModelProperty("进出境关别")
@Excel(name = "进出境关别")
private String entryExitCustoms;
@ApiModelProperty("起运/运抵国(地区)")
@Excel(name = "起运/运抵国(地区)")
private String departureArrivalCountry;
@ApiModelProperty("承运商")
@Excel(name = "承运商")
private String carrier;
@ApiModelProperty("柜号")
@Excel(name = "柜号")
private String containerNo;
@ApiModelProperty("")
@Excel(name = "")
private String containerNoName;
@ApiModelProperty("出仓日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date outboundDate;
@ApiModelProperty("完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
@ApiModelProperty("orderDate")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "orderDate", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date orderDate;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeCode;
@ApiModelProperty("运输方式")
@Excel(name = "运输方式")
private String transportModeName;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeCode;
@ApiModelProperty("监管方式")
@Excel(name = "监管方式")
private String supervisionModeName;
@ApiModelProperty("海关是否查验货物")
@Excel(name = "海关是否查验货物")
private String customsInspectionFlag;
@ApiModelProperty("是否需要报关")
@Excel(name = "是否需要报关")
private String needDeclareFlag;
@ApiModelProperty("是否需要运输")
@Excel(name = "是否需要运输")
private String needTransportFlag;
} }
@@ -62,7 +62,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.level, a.parent_unique_id, a.allow_modify, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.level, a.parent_unique_id, a.allow_modify,
a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name, a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name,
a.remark, a.create_time, a.create_by,gen_picking_order, a.remark, a.create_time, a.create_by,gen_picking_order,
a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type,
a.COMMODITY_NAME,a.COMMODITY_NO,a.MATERIAL_NO,a.SPECIFICATION_MODEL,a.SKUCODE,a.INVOICE_NO,a.LITER,a.SIZE,a.DECLARE_UNIT,a.BATCH_REF_NO,a.SHEET_REF_NO,a.COUNTRY_OF_ORIGIN,a.CASE_PALLET_NO,a.CURRENCY,a.DECLARE_QUANTITY,a.CASE_COUNT,a.PIECE_COUNT,a.OUTBOUND_QUANTITY,a.TOTAL_NET_WEIGHT,a.TOTAL_GROSS_WEIGHT,a.TOTAL_VOLUME,a.TOTAL_AREA,a.TOTAL_AMOUNT,a.UNIT
</sql> </sql>
<sql id="selectMaterialDetailPo1"> <sql id="selectMaterialDetailPo1">