diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index 10d1f72d5..9e9648842 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -4,32 +4,33 @@ import com.mhd.common.core.constant.ServiceNameConstants; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.system.api.domain.*; import com.mhd.system.api.factory.RemoteBmsFeignFallbackFactory; +import com.mhd.system.api.factory.RemoteOmsFeignFallbackFactory; import com.mhd.system.api.feign.FeignAutoConfiguration; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE, fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE, fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { @ApiOperation("wms推送入库单") @PostMapping(value = "/reservationStockInOrderApi/pushInOrder") - public AjaxResult pushInOrder(@RequestBody StockInOrder stockInOrder); + public AjaxResult pushInOrder(@RequestBody StockInOrderTZPD stockInOrder); @ApiOperation("wms推送入库单明细") @PostMapping(value = "/reservationStockInOrderApi/pushInOrderDetail") - public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetail inMaterialDetail); + public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetailTZPD inMaterialDetail); @ApiOperation("wms推送入库单") @PostMapping(value = "/reservationStockOutOrderApi/pushOutOrder") - public AjaxResult pushOutOrder(@RequestBody StockOutOrder stockOutOrder); + public AjaxResult pushOutOrder(@RequestBody StockOutOrderTZPD stockOutOrder); @ApiOperation("wms推送入库单明细") @PostMapping(value = "/reservationStockOutOrderApi/pushOutOrderDetail") - public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetail outMaterialDetail); + public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetailTZPD outMaterialDetail); @ApiOperation("编辑物料库存") @PostMapping("/materialInventoryApi/omsEdit") diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetailTZPD.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetailTZPD.java new file mode 100644 index 000000000..9c112e4c7 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetailTZPD.java @@ -0,0 +1,371 @@ +package com.mhd.system.api.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailTZPD extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("作业数量(例如:收货数量 上架数量)") + @Excel(name = "作业数量(例如:收货数量 上架数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + private Integer receiptStatus; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; + + // ========== 报关相关明细字段 ========== + @ApiModelProperty("规格型号") + @Excel(name = "规格型号/ITEM") + private String specificationModel; + + @ApiModelProperty("SKU码") + @Excel(name = "SKU码") + private String skuCode; + + @ApiModelProperty("Invoice No.") + @Excel(name = "Invoice No.") + private String invoiceNo; + + @ApiModelProperty("升") + @Excel(name = "升") + private BigDecimal liter; + + @ApiModelProperty("尺寸") + @Excel(name = "尺寸") + private String dimensions; + + @ApiModelProperty("申报单位") + @Excel(name = "申报单位") + private String declarationUnit; + + @ApiModelProperty("Batch Ref NO's") + @Excel(name = "Batch Ref NO's") + private String batchRefNo; + + @ApiModelProperty("Sheet Ref NO's") + @Excel(name = "Sheet Ref NO's") + private String sheetRefNo; + + @ApiModelProperty("原产国") + @Excel(name = "原产国") + private String originCountry; + + @ApiModelProperty("箱号/卡板号") + @Excel(name = "箱号/卡板号") + private String boxPalletNo; + + @ApiModelProperty("币制") + @Excel(name = "币制") + private String currency; + + @ApiModelProperty("单位") + @Excel(name = "单位") + private String unit; + + @ApiModelProperty("申报数量") + @Excel(name = "申报数量") + private BigDecimal declaredQuantity; + + @ApiModelProperty("箱数") + @Excel(name = "箱数") + private BigDecimal boxCount; + + @ApiModelProperty("件数") + @Excel(name = "件数") + private BigDecimal pieceCount; + + @ApiModelProperty("入库数量(输入大于等于0的数字,可以为小数)") + @Excel(name = "入库数量") + private BigDecimal inboundQuantity; + + @ApiModelProperty("总净重(KG)") + @Excel(name = "总净重(KG)") + private BigDecimal totalNetWeight; + + @ApiModelProperty("总毛重(KG)") + @Excel(name = "总毛重(KG)") + private BigDecimal totalGrossWeight; + + @ApiModelProperty("总体积(CBM)") + @Excel(name = "总体积(CBM)") + private BigDecimal totalVolume; + + @ApiModelProperty("总面积(SQM)") + @Excel(name = "总面积(SQM)") + private BigDecimal totalArea; + + @ApiModelProperty("总价") + @Excel(name = "总价") + private BigDecimal totalPrice; + + @ApiModelProperty("合同收费") + @Excel(name = "合同收费") + private BigDecimal contractFee; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseFee; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWhFee; + + @ApiModelProperty("折扣(%)") + @Excel(name = "折扣(%)") + private BigDecimal discountRate; + + @ApiModelProperty("单体积(CBM)") + @Excel(name = "单体积(CBM)") + private BigDecimal singleVolume; + + @ApiModelProperty("单毛重(KG)") + @Excel(name = "单毛重(KG)") + private BigDecimal singleGrossWeight; + + @ApiModelProperty("lot编号") + @Excel(name = "lot编号") + private String lotNo; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/OutMaterialDetailTZPD.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/OutMaterialDetailTZPD.java new file mode 100644 index 000000000..896093246 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/OutMaterialDetailTZPD.java @@ -0,0 +1,496 @@ +package com.mhd.system.api.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class OutMaterialDetailTZPD extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已分配数量") + @Excel(name = "已分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("本次分配数量") + @Excel(name = "本次分配数量") + @TableField(exist = false) + private BigDecimal nowAllocationQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("分配仓库id") + private Long warehouseId; + + @ApiModelProperty("分配仓库编码") + @Excel(name = "分配仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("分配库区id") + @Excel(name = "分配库区id") + private Long storageSectionId; + + @ApiModelProperty("分配库区编码") + @Excel(name = "分配库区编码") + private String storageCode; + + @ApiModelProperty("分配库区名称") + @Excel(name = "分配库区名称") + private String storageName; + + @ApiModelProperty("分配库位id") + @Excel(name = "分配库位id") + private Long storageLocationId; + + @ApiModelProperty("分配库位编码") + @Excel(name = "分配库位编码") + private String storageLocationCode; + + @ApiModelProperty("分配库位名称") + @Excel(name = "分配库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成拣货单: 1-是 2-否") + @Excel(name = "是否生成拣货单: 1-是 2-否") + private Integer genPickingOrder; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + 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 NO’s + */ + @ApiModelProperty("Batch Ref NO’s") + @Excel(name = "Batch Ref NO’s") + private String batchRefNo; + + /** + * Sheet Ref NO’s + */ + @ApiModelProperty("Sheet Ref NO’s") + @Excel(name = "Sheet Ref NO’s") + private String sheetRefNo; + + /** + * 原产国 + */ + @ApiModelProperty("原产国") + @Excel(name = "原产国") + private String countryOfOrigin; + + /** + * 箱号/卡板号 + */ + @ApiModelProperty("箱号/卡板号") + @Excel(name = "箱号/卡板号") + private String boxPalletNo; + + /** + * 币制 + */ + @ApiModelProperty("币制") + @Excel(name = "币制") + private String currency; + + /** + * 申报数量 + */ + @ApiModelProperty("申报数量") + @Excel(name = "申报数量") + private BigDecimal declareQuantity; + + /** + * 箱数 + */ + @ApiModelProperty("箱数") + @Excel(name = "箱数") + private BigDecimal caseCount; + + /** + * 件数 + */ + @ApiModelProperty("件数") + @Excel(name = "件数") + private BigDecimal pieceCount; + + /** + * 出库数量 + */ + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outboundQuantity; + + /** + * 总净重(KG) + */ + @ApiModelProperty("总净重(KG)") + @Excel(name = "总净重(KG)") + private BigDecimal totalNetWeight; + + /** + * 总毛重(KG) + */ + @ApiModelProperty("总毛重(KG)") + @Excel(name = "总毛重(KG)") + private BigDecimal totalGrossWeight; + + /** + * 总体积(CBM) + */ + @ApiModelProperty("总体积(CBM)") + @Excel(name = "总体积(CBM)") + private BigDecimal totalVolume; + + /** + * 总面积(SQM) + */ + @ApiModelProperty("总面积(SQM)") + @Excel(name = "总面积(SQM)") + private BigDecimal totalArea; + /** + * 总价 + */ + @ApiModelProperty("总价") + @Excel(name = "总价") + private BigDecimal totalAmount; + + /** + * 单位 + */ + @ApiModelProperty("单位") + @Excel(name = "单位") + private String unit; + + @ApiModelProperty("扩展属性1") + @Excel(name = "扩展属性1") + @TableField("ext_attr_1") + private String extAttr1; + + @ApiModelProperty("扩展属性2") + @Excel(name = "扩展属性2") + @TableField("ext_attr_2") + private String extAttr2; + + @ApiModelProperty("生产日期") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date productionDate; + + @ApiModelProperty("过期日期") + @Excel(name = "过期日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expiryDate; + + @ApiModelProperty("存货日期") + @Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inventoryDate; + + @ApiModelProperty("扩展属性3") + @Excel(name = "扩展属性3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField("ext_attr_3") + private Date extAttr3; + + @ApiModelProperty("扩展属性4") + @Excel(name = "扩展属性4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField("ext_attr_4") + private Date extAttr4; + + /** + * 库存数量(仅用于前端展示,从material_inventory表中带出) + */ + @ApiModelProperty("分配时库存数量") + private BigDecimal inventoryQuantity; + + @TableField(exist = false) + private BigDecimal actualQuantity; + + @ApiModelProperty("复核总净重(KG)") + @Excel(name = "复核总净重(KG)") + private BigDecimal checkNetWeight; + + @ApiModelProperty("复核总毛重(KG)") + @Excel(name = "复核总毛重(KG)") + private BigDecimal checkGrossWeight; + + @ApiModelProperty("复核总体积(CBM)") + @Excel(name = "复核总体积(CBM)") + private BigDecimal checkVolume; + + @ApiModelProperty("复核总面积(SQM)") + @Excel(name = "复核总面积(SQM)") + private BigDecimal checkArea; + + @ApiModelProperty("是否已分配") + @Excel(name = "是否已分配") + private String isAllocated; + + + @ApiModelProperty("合同收费") + @Excel(name = "合同收费") + private BigDecimal contractFee; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseFee; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWhFee; + + @ApiModelProperty("折扣(%)") + @Excel(name = "折扣(%)") + private BigDecimal discountRate; + + @ApiModelProperty("单体积(CBM)") + @Excel(name = "单体积(CBM)") + private BigDecimal singleVolume; + + @ApiModelProperty("单毛重(KG)") + @Excel(name = "单毛重(KG)") + private BigDecimal singleGrossWeight; + + @ApiModelProperty("lot编号") + @Excel(name = "lot编号") + private String lotNo; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("库存单位") + @Excel(name = "库存单位") + private String stockUnit; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal stockQuantity; +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrderTZPD.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrderTZPD.java new file mode 100644 index 000000000..25c278633 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrderTZPD.java @@ -0,0 +1,365 @@ +package com.mhd.system.api.domain; + +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; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 入库单对象 stock_in_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInOrderTZPD extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + @TableId(type = IdType.AUTO) + private Long inOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + private Integer status; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date closeTime; + + @ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + @Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + private Integer orderSource; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调度单号") + private String mobilizeCode; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; + + // ========== 报关相关字段 ========== + @ApiModelProperty("To") + @Excel(name = "To") + @TableField(value = "\"TO\"") + private String to; + + @ApiModelProperty("联系人") + @Excel(name = "联系人") + private String contactPerson; + + @ApiModelProperty("车型及车牌") + @Excel(name = "车型及车牌") + private String vehicleInfo; + + @ApiModelProperty("委托编号NO") + @Excel(name = "委托编号NO") + private String consignmentNo; + + @ApiModelProperty("Tel") + @Excel(name = "Tel") + private String tel; + + @ApiModelProperty("司机签名") + @Excel(name = "司机签名") + private String driverSignature; + + @ApiModelProperty("Fax") + @Excel(name = "Fax") + private String fax; + + @ApiModelProperty("申报地关区") + @Excel(name = "申报地关区") + private String declarationArea; + + @ApiModelProperty("生产商") + @Excel(name = "生产商") + private String manufacturer; + + @ApiModelProperty("报关员姓名及联系方式") + @Excel(name = "报关员姓名及联系方式") + private String customsBrokerInfo; + + @ApiModelProperty("送货地址") + @Excel(name = "送货地址") + private String deliveryAddress; + + @ApiModelProperty("进出境关别") + @Excel(name = "进出境关别") + private String entryExitCustoms; + + @ApiModelProperty("起运/运抵国(地区)") + @Excel(name = "起运/运抵国(地区)") + private String originDestinationCountry; + + @ApiModelProperty("承运商") + @Excel(name = "承运商") + private String carrier; + + @ApiModelProperty("柜号") + @Excel(name = "柜号") + private String containerNo; + + @ApiModelProperty("运输方式") + @Excel(name = "运输方式") + private String transportMethod; + + @ApiModelProperty("监管方式") + @Excel(name = "监管方式") + private String supervisionMethod; + + @ApiModelProperty("海关是否查验货物") + @Excel(name = "海关是否查验货物") + private Integer customsInspection; + + @ApiModelProperty("是否需要报关") + @Excel(name = "是否需要报关") + private Integer needCustomsDeclaration; + + @ApiModelProperty("是否需要运输") + @Excel(name = "是否需要运输") + private Integer needTransport; + + @ApiModelProperty("入仓日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date warehouseDate; + + @ApiModelProperty("完成时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date completionTime; + + @ApiModelProperty("下单日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "下单日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date orderDate; + + @ApiModelProperty("业务单号") + @Excel(name = "业务单号") + private String businessOrderNo; + + @ApiModelProperty("业务类型") + @Excel(name = "业务类型") + private String businessType; + + @ApiModelProperty("制单人") + @Excel(name = "制单人") + private String documentCreator; + + @ApiModelProperty("制单人名称") + @Excel(name = "制单人名称") + private String documentCreatorName; + + @ApiModelProperty("制单日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date documentDate; + + @ApiModelProperty("订单状态") + @Excel(name = "订单状态") + private String orderStatus; + + @ApiModelProperty("oms入库单id") + @Excel(name = "oms入库单id") + private String omsStockInOrderId; + @ApiModelProperty("结算币种") + private String settlementCurrency; + @ApiModelProperty("业务员ID") + private String salesmanId; + @ApiModelProperty("业务员名称") + private String salesmanName; +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderTZPD.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderTZPD.java new file mode 100644 index 000000000..179712da9 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderTZPD.java @@ -0,0 +1,405 @@ +package com.mhd.system.api.domain; + +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; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutOrderTZPD extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + @TableId(type = IdType.AUTO) + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @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 checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; + + @ApiModelProperty("to") + @Excel(name = "to") + @TableField(value = "\"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 carrierName; + + @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; + @ApiModelProperty("app上传的图片") + private String pictureApp; + + @ApiModelProperty("业务单号") + @Excel(name = "业务单号") + private String businessOrderNo; + + @ApiModelProperty("业务类型") + @Excel(name = "业务类型") + private String businessType; + + @ApiModelProperty("制单人") + @Excel(name = "制单人") + private String documentCreator; + + @ApiModelProperty("制单人名称") + @Excel(name = "制单人名称") + private String documentCreatorName; + + @ApiModelProperty("制单日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date documentDate; + + @ApiModelProperty("结算币种") + private String settlementCurrency; + @ApiModelProperty("业务员ID") + private String salesmanId; + @ApiModelProperty("业务员名称") + private String salesmanName; + +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteOmsFeignFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteOmsFeignFallbackFactory.java new file mode 100644 index 000000000..ff04d9baf --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteOmsFeignFallbackFactory.java @@ -0,0 +1,58 @@ +package com.mhd.system.api.factory; + +import com.mhd.common.core.domain.dto.BusinessDataPushDTO; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.BmsServiceFeign; +import com.mhd.system.api.OmsServiceFeign; +import com.mhd.system.api.domain.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.Set; + + +/** + * @Description + * @Author zg + * @Version 1.0 + * @Date 2023/11/3 14:37 + */ +@Component +public class RemoteOmsFeignFallbackFactory implements FallbackFactory { + + private static final Logger log = LoggerFactory.getLogger(RemoteOmsFeignFallbackFactory.class); + + @Override + public OmsServiceFeign create(Throwable throwable) { + log.error("系统服务调用失败:{}", throwable.getMessage()); + return new OmsServiceFeign() { + + @Override + public AjaxResult pushInOrder(StockInOrderTZPD stockInOrder) { + return null; + } + + @Override + public AjaxResult pushInOrderDetail(InMaterialDetailTZPD inMaterialDetail) { + return null; + } + + @Override + public AjaxResult pushOutOrder(StockOutOrderTZPD stockOutOrder) { + return null; + } + + @Override + public AjaxResult pushOutOrderDetail(OutMaterialDetailTZPD outMaterialDetail) { + return null; + } + + @Override + public AjaxResult omsEdit(MaterialInventoryOmsParamDO materialInventoryOmsParamDO) { + return null; + } + }; + } +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index 6431fcf3c..8b1631346 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -42,6 +42,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -161,13 +163,23 @@ public class LeaseApplicationService { setWarehouseInfo(leaseDO); Lease insert = leaseDomainService.insertReturn(leaseDO); if (insert != null) { + // 指定时区获取当前日期(中国时区) + LocalDate now = LocalDate.now(ZoneId.of("Asia/Shanghai")); + + int year = now.getYear(); + int month = now.getMonthValue(); + int day = now.getDayOfMonth(); + + System.out.println("年:" + year); + System.out.println("月:" + month); + System.out.println("日:" + day); ScheduledTask scheduledTask = new ScheduledTask(); scheduledTask.setTaskType("shipperLeaseDetails"); scheduledTask.setTaskStatus("PENDING"); scheduledTask.setBusId(insert.getId()); scheduledTask.setTaskData(JSON.toJSONString(scheduledTask)); scheduledTask.setCreateTime(new Date()); - scheduledTask.setBillDays(insert.getBillDays()); + scheduledTask.setBillDays(insert.getBillDays() == null ? day : insert.getBillDays()); scheduledTask.setBillTime(insert.getBillTime()); scheduledTask.setRetryCount(0); scheduledTask.setExecuteTime(DateUtil.beginOfDay(DateUtil.tomorrow())); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java index 36cff4dd6..d924032fd 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java @@ -16,8 +16,8 @@ import com.mhd.oms.domain.reservationStockInOrder.repository.todo.ReservationSto import com.mhd.oms.domain.reservationStockInOrder.repository.todo.ReservationStockInOrderDTO; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.UserServiceFeign; -import com.mhd.system.api.domain.InMaterialDetail; -import com.mhd.system.api.domain.StockInOrder; +import com.mhd.system.api.domain.InMaterialDetailTZPD; +import com.mhd.system.api.domain.StockInOrderTZPD; import com.mhd.system.api.domain.SysDictData; import com.mhd.system.api.domain.WarehouseFeignPO; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; @@ -305,11 +305,11 @@ public class ReservationStockInOrderApplicationService { return stockInOrderDomainService.closeOrder(stockInOrderDO); } - public Boolean pushInOrder(StockInOrder stockInOrderDO){ + public Boolean pushInOrder(StockInOrderTZPD stockInOrderDO){ return stockInOrderDomainService.pushInOrder(stockInOrderDO); } - public Boolean pushInOrderDetail(InMaterialDetail inMaterialDetail){ + public Boolean pushInOrderDetail(InMaterialDetailTZPD inMaterialDetail){ return stockInOrderDomainService.pushInOrderDetail(inMaterialDetail); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 1891fcb5f..df7ab77b1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -31,9 +31,7 @@ import com.mhd.oms.domain.reservationStockOutOrder.entity.ReservationStockOutOrd import com.mhd.oms.domain.reservationStockOutOrder.repository.facade.IReservationStockOutOrderService; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.WmsServiceFeign; -import com.mhd.system.api.domain.InMaterialDetail; -import com.mhd.system.api.domain.PackDetailFeignPO; -import com.mhd.system.api.domain.StockInOrder; +import com.mhd.system.api.domain.*; import com.mhd.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; @@ -542,14 +540,14 @@ public class ReservationStockInOrderDomainService { .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); } - public Boolean pushInOrder(StockInOrder stockInOrder) { + public Boolean pushInOrder(StockInOrderTZPD stockInOrder) { ReservationStockInOrder reservationStockInOrder = new ReservationStockInOrder(); BeanUtils.copyProperties(stockInOrder, reservationStockInOrder); reservationStockInOrder.setIssueStatus(4); return stockInOrderService.save(reservationStockInOrder); } - public Boolean pushInOrderDetail(InMaterialDetail inMaterialDetail) { + public Boolean pushInOrderDetail(InMaterialDetailTZPD inMaterialDetail) { ReservationInMaterialDetail reservationInMaterialDetail = new ReservationInMaterialDetail(); BeanUtils.copyProperties(inMaterialDetail, reservationInMaterialDetail); return materialDetailService.save(reservationInMaterialDetail); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java index ecb7da5d4..32a09aff7 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java @@ -234,11 +234,11 @@ public class ReservationStockOutOrderApplicationService { } - public Boolean pushOutOrder(StockOutOrder stockOutOrderDO){ + public Boolean pushOutOrder(StockOutOrderTZPD stockOutOrderDO){ return stockOutOrderDomainService.pushOutOrder(stockOutOrderDO); } - public Boolean pushOutOrderDetail(OutMaterialDetail outMaterialDetail){ + public Boolean pushOutOrderDetail(OutMaterialDetailTZPD outMaterialDetail){ return stockOutOrderDomainService.pushOutOrderDetail(outMaterialDetail); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java index 51dd5f5f8..e6820b77d 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java @@ -229,14 +229,14 @@ public class ReservationStockOutOrderDomainService { } - public Boolean pushOutOrder(StockOutOrder stockOutOrder) { + public Boolean pushOutOrder(StockOutOrderTZPD stockOutOrder) { ReservationStockOutOrder reservationStockOutOrder = new ReservationStockOutOrder(); BeanUtils.copyProperties(stockOutOrder, reservationStockOutOrder); reservationStockOutOrder.setIssueStatus(4); return stockOutOrderService.save(reservationStockOutOrder); } - public Boolean pushOutOrderDetail(OutMaterialDetail outMaterialDetail) { + public Boolean pushOutOrderDetail(OutMaterialDetailTZPD outMaterialDetail) { ReservationOutMaterialDetail reservationOutMaterialDetail = new ReservationOutMaterialDetail(); BeanUtils.copyProperties(outMaterialDetail, reservationOutMaterialDetail); return outMaterialDetailService.save(reservationOutMaterialDetail); diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java index 7ccfdc3b8..5fbe7132d 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java @@ -14,12 +14,10 @@ import com.mhd.oms.domain.reservationStockOutOrder.repository.todo.ReservationSt import com.mhd.oms.domain.reservationStockOutOrder.repository.todo.ReservationStockOutOrderDTO; import com.mhd.oms.domain.reservationStockOutOrder.service.ReservationStockOutOrderApplicationService; import com.mhd.oms.domain.reservationStockOutOrder.service.ReservationStockOutOrderAssembler; -import com.mhd.system.api.domain.InMaterialDetail; -import com.mhd.system.api.domain.OutMaterialDetail; -import com.mhd.system.api.domain.StockInOrder; -import com.mhd.system.api.domain.StockOutOrder; +import com.mhd.system.api.domain.*; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -186,13 +184,13 @@ public class ReservationStockOutOrderApi extends BaseController { @ApiOperation("wms推送入库单") @PostMapping(value = "/pushOutOrder") - public AjaxResult pushOutOrder(@RequestBody StockOutOrder stockOutOrder) { + public AjaxResult pushOutOrder(@RequestBody StockOutOrderTZPD stockOutOrder) { return AjaxResult.success(stockOutOrderApplicationService.pushOutOrder(stockOutOrder)); } @ApiOperation("wms推送入库单明细") @PostMapping(value = "/pushOutOrderDetail") - public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetail outMaterialDetail) { + public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetailTZPD outMaterialDetail) { return AjaxResult.success(stockOutOrderApplicationService.pushOutOrderDetail(outMaterialDetail)); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java index 309a1f70e..a77bf2ea1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java @@ -10,7 +10,9 @@ import com.mhd.oms.domain.reservationStockInOrder.repository.todo.ReservationSto import com.mhd.oms.domain.reservationStockInOrder.service.ReservationStockInOrderApplicationService; import com.mhd.oms.domain.reservationStockInOrder.service.ReservationStockInOrderAssembler; import com.mhd.system.api.domain.InMaterialDetail; +import com.mhd.system.api.domain.InMaterialDetailTZPD; import com.mhd.system.api.domain.StockInOrder; +import com.mhd.system.api.domain.StockInOrderTZPD; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -155,13 +157,13 @@ public class ReservationStockInOrderApi extends BaseController { @ApiOperation("wms推送入库单") @PostMapping(value = "/pushInOrder") - public AjaxResult pushInOrder(@RequestBody StockInOrder stockInOrder) { + public AjaxResult pushInOrder(@RequestBody StockInOrderTZPD stockInOrder) { return AjaxResult.success(stockInOrderApplicationService.pushInOrder(stockInOrder)); } @ApiOperation("wms推送入库单明细") @PostMapping(value = "/pushInOrderDetail") - public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetail inMaterialDetail) { + public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetailTZPD inMaterialDetail) { return AjaxResult.success(stockInOrderApplicationService.pushInOrderDetail(inMaterialDetail)); } diff --git a/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml index 3b06c8a2b..8e94a6987 100644 --- a/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml @@ -94,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -111,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.COMPLETE_TIME,a.ORDER_DATE,a.TRANSPORT_MODE_CODE,a.TRANSPORT_MODE_NAME,a.SUPERVISION_MODE_CODE,a.SUPERVISION_MODE_NAME, a.CUSTOMS_INSPECTION_FLAG,a.NEED_DECLARE_FLAG,a.NEED_TRANSPORT_FLAG,a.picture_app,a.reservation_audit_time,a.reservation_audit_name ,a.reservation_audit_id,a.issue_name,a.issue_id,a.issue_time,a.issue_status,a.tms_order_number, - a.DIRECTOR_NAME ,a.DIRECTOR_PHONE,a.DIRECTOR_ID,a.RESERVATION_ORDER_SOURCE,a.OUTBOUND_TIME + a.DIRECTOR_NAME ,a.DIRECTOR_PHONE,a.DIRECTOR_ID,a.RESERVATION_ORDER_SOURCE,a.OUTBOUND_TIME,a.BUSINESS_ORDER_NO diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index aee534eb7..8d4cdc70b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -2084,11 +2084,14 @@ public class StockReceiptOrderApplicationService { continue; } ReceiptMaterialDetailDO firstChild = children.get(0); - // 主行已携带本次收货/抄码数据时,不再被 children[0] 覆盖(避免 copyDetails/copyQuantity 被清空) + // 主行已携带本次收货/抄码数据时,不再被 children[0] 整行覆盖(避免 copyDetails/copyQuantity 被清空) if (!hasPdaSubmittedReceiptOrCopyData(parent)) { // 将第一条子项的值赋给主项(含批次属性、收货数量等) BeanUtils.copyProperties(firstChild, parent, "children", "parentUniqueId", "uniqueId", "materialDetailId", "organizationIdList", "permissionMenuId", "receiptOrderNumberList", "compoundOrQuery"); + } else { + // PDA 常把件数挂在主行、把毛净重体面积/批次仅挂在 parent_copy 子行;若此处不合并,assign 后删掉子行会导致装配增量全为 0 + mergePdaParentCopyScalarFieldsFromFirstChild(parent, firstChild); } // 删除 children 中的第一条 List newChildren = new ArrayList<>(); @@ -2099,6 +2102,75 @@ public class StockReceiptOrderApplicationService { } } + /** + * getInfoByApp 把 parent_copy 挂在 children[0]:PDA 常在子行填毛净重体面积/批次,主行只带回件数。 + * 若主行已有 receiptQuantity 会跳过整段 {@link BeanUtils#copyProperties},须把子行实绩字段补到主行,否则删掉子行后装配增量为 0。 + */ + private static void mergePdaParentCopyScalarFieldsFromFirstChild(ReceiptMaterialDetailDO parent, ReceiptMaterialDetailDO child) { + if (parent == null || child == null) { + return; + } + if (parent.getReceiptNetWeight() == null) { + parent.setReceiptNetWeight(child.getReceiptNetWeight()); + } + if (parent.getReceiptGrossWeight() == null) { + parent.setReceiptGrossWeight(child.getReceiptGrossWeight()); + } + if (parent.getReceiptVolume() == null) { + parent.setReceiptVolume(child.getReceiptVolume()); + } + if (parent.getReceiptArea() == null) { + parent.setReceiptArea(child.getReceiptArea()); + } + if (parent.getTotalNetWeight() == null) { + parent.setTotalNetWeight(child.getTotalNetWeight()); + } + if (parent.getTotalGrossWeight() == null) { + parent.setTotalGrossWeight(child.getTotalGrossWeight()); + } + if (parent.getTotalVolume() == null) { + parent.setTotalVolume(child.getTotalVolume()); + } + if (parent.getTotalArea() == null) { + parent.setTotalArea(child.getTotalArea()); + } + if (StringUtils.isBlank(parent.getLotNo()) && StringUtils.isNotBlank(child.getLotNo())) { + parent.setLotNo(child.getLotNo()); + } + if (StringUtils.isBlank(parent.getBatchNumber()) && StringUtils.isNotBlank(child.getBatchNumber())) { + parent.setBatchNumber(child.getBatchNumber()); + } + if (StringUtils.isBlank(parent.getDimensions()) && StringUtils.isNotBlank(child.getDimensions())) { + parent.setDimensions(child.getDimensions()); + } + mergeMaterialMoreDetailAttributeValuesFromChild(parent, child); + } + + /** 主行与子行 batchDetailId 相同的批次属性:子行有 attributeValue 时补到主行(主行为空时) */ + private static void mergeMaterialMoreDetailAttributeValuesFromChild(ReceiptMaterialDetailDO parent, ReceiptMaterialDetailDO child) { + List childList = child.getMaterialMoreDetailList(); + if (CollectionUtils.isEmpty(childList)) { + return; + } + List parentList = parent.getMaterialMoreDetailList(); + if (CollectionUtils.isEmpty(parentList)) { + parent.setMaterialMoreDetailList(new ArrayList<>(childList)); + return; + } + for (MaterialMoreDetailDO c : childList) { + if (c == null || c.getBatchDetailId() == null || StringUtils.isBlank(c.getAttributeValue())) { + continue; + } + for (MaterialMoreDetailDO p : parentList) { + if (p != null && c.getBatchDetailId().equals(p.getBatchDetailId()) + && StringUtils.isBlank(p.getAttributeValue())) { + p.setAttributeValue(c.getAttributeValue()); + break; + } + } + } + } + private static boolean hasPdaSubmittedReceiptOrCopyData(ReceiptMaterialDetailDO line) { if (line == null) { return false; diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 75425e967..f04f71755 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -1301,6 +1301,8 @@ public class StockShelfOrderApplicationService { shelfMaterialDetailDO.setStorageSectionId(firstChild.getStorageSectionId()); shelfMaterialDetailDO.setStorageLocationId(firstChild.getStorageLocationId()); shelfMaterialDetailDO.setContainerId(firstChild.getContainerId()); + // PDA 常把毛净重体面积挂在 parent_copy 子行,主行 total* 为 0;本分支若不合并,assemble 增量全为 0 + mergePdaShelfParentCopyMetricsFromFirstChild(shelfMaterialDetailDO, firstChild); // 不把子行 level 复制到主项;assembleParamByShelf 会以库表主行 level 为准 shelfMaterialDetailDO.setMaterialDetailSerialNumberList(firstChild.getMaterialDetailSerialNumberList()); // 保留其余子项(从索引1开始),统一设为 level 2 @@ -1420,6 +1422,8 @@ public class StockShelfOrderApplicationService { continue; } BeanUtils.copyProperties(firstChild, parent, "children", "parentUniqueId", "uniqueId", "materialDetailId"); + // 与收货 merge 一致:主行若仍为 0/空而子行有实绩,补 total* / 尺寸 / 批次,避免 copy 未生效或主行显式 0 盖住子行 + mergePdaShelfParentCopyMetricsFromFirstChild(parent, firstChild); List newChildren = new ArrayList<>(); for (int i = 1; i < children.size(); i++) { ShelfMaterialDetailDO c = children.get(i); @@ -1430,6 +1434,41 @@ public class StockShelfOrderApplicationService { } } + /** + * getInfoByApp 把 parent_copy 挂在 children[0]:PDA 常在子行填毛净重体面积,主行 total* 为 0 或仅占位。 + * assign/分支合并库位与数量后,若主行仍为 0/空则必须用子行补全,否则去掉子行或走 inject 后装配增量为 0、回显也为空。 + */ + private static void mergePdaShelfParentCopyMetricsFromFirstChild(ShelfMaterialDetailDO parent, ShelfMaterialDetailDO child) { + if (parent == null || child == null) { + return; + } + if (isZeroOrNullBigDecimal(parent.getTotalNetWeight()) && !isZeroOrNullBigDecimal(child.getTotalNetWeight())) { + parent.setTotalNetWeight(child.getTotalNetWeight()); + } + if (isZeroOrNullBigDecimal(parent.getTotalGrossWeight()) && !isZeroOrNullBigDecimal(child.getTotalGrossWeight())) { + parent.setTotalGrossWeight(child.getTotalGrossWeight()); + } + if (isZeroOrNullBigDecimal(parent.getTotalVolume()) && !isZeroOrNullBigDecimal(child.getTotalVolume())) { + parent.setTotalVolume(child.getTotalVolume()); + } + if (isZeroOrNullBigDecimal(parent.getTotalArea()) && !isZeroOrNullBigDecimal(child.getTotalArea())) { + parent.setTotalArea(child.getTotalArea()); + } + if (StringUtils.isBlank(parent.getDimensions()) && StringUtils.isNotBlank(child.getDimensions())) { + parent.setDimensions(child.getDimensions()); + } + if (StringUtils.isBlank(parent.getBatchNumber()) && StringUtils.isNotBlank(child.getBatchNumber())) { + parent.setBatchNumber(child.getBatchNumber()); + } + if (StringUtils.isBlank(parent.getLotNumber()) && StringUtils.isNotBlank(child.getLotNumber())) { + parent.setLotNumber(child.getLotNumber()); + } + } + + private static boolean isZeroOrNullBigDecimal(BigDecimal v) { + return v == null || v.compareTo(BigDecimal.ZERO) == 0; + } + /** * 判断第一条子项是否为 parent_copy(主项拷贝)。与主项同 materialDetailId/uniqueId 则为 parent_copy。 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java index 6c8249193..e06c427a4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java @@ -11,9 +11,7 @@ import com.mhd.common.core.utils.uuid.IdGenerator; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.OmsServiceFeign; import com.mhd.system.api.SystemServiceFeign; -import com.mhd.system.api.domain.InMaterialDetail; -import com.mhd.system.api.domain.OutMaterialDetail; -import com.mhd.system.api.domain.StockOutOrder; +import com.mhd.system.api.domain.*; import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.differentManage.entity.DifferentManage; import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService; @@ -243,7 +241,7 @@ public class DifferentManageImpl extends ServiceImpl