WMS入库管理模块bug修改

This commit is contained in:
秦鸿展
2026-01-23 15:42:37 +08:00
parent ca4b1ce2a3
commit 186c5d1b94
16 changed files with 200 additions and 96 deletions
@@ -68,8 +68,8 @@ public class StockInOrderApplicationService {
if (topOrganizationId != null && topOrganizationId != 1){
stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
// stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
return stockInOrderDomainService.queryList(stockInOrderDO);
}
@@ -79,26 +79,26 @@ public class StockInOrderApplicationService {
* 新增入库单
*/
public Boolean insert(StockInOrderDO stockInOrderDO) {
// 如果仓库ID为空,从当前登录用户的关联仓库中获取
// if (stockInOrderDO.getWarehouseId() == null) {
// LoginUser loginUser = SecurityUtils.getLoginUser();
// if (loginUser == null) {
// throw new ServiceException("登录已失效,请重新登录");
// }
// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
// if (associationWarehouseCacheDO == null || associationWarehouseCacheDO.getWarehouseId() == null) {
// throw new ServiceException("当前用户未配置关联仓库,请先配置仓库");
// }
// stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
// }
// //设置仓库
// setWarehouseInfo(stockInOrderDO);
//设置货主信息
// shipperParam(stockInOrderDO);
//设置供应商信息
// supplierParam(stockInOrderDO);
//设置数据字典键值
// setDataDict(stockInOrderDO);
// 如果仓库ID为空,从当前登录用户的关联仓库中获取
if (stockInOrderDO.getWarehouseId() == null) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException("登录已失效,请重新登录");
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
if (associationWarehouseCacheDO == null || associationWarehouseCacheDO.getWarehouseId() == null) {
throw new ServiceException("当前用户未配置关联仓库,请先配置仓库");
}
stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
//设置仓库
setWarehouseInfo(stockInOrderDO);
// 设置货主信息
shipperParam(stockInOrderDO);
// 设置供应商信息
supplierParam(stockInOrderDO);
// 设置数据字典键值
setDataDict(stockInOrderDO);
return stockInOrderDomainService.insert(stockInOrderDO);
}
@@ -107,13 +107,13 @@ public class StockInOrderApplicationService {
*/
public Boolean update(StockInOrderDO stockInOrderDO) {
//设置仓库
// setWarehouseInfo(stockInOrderDO);
setWarehouseInfo(stockInOrderDO);
//设置货主信息
// shipperParam(stockInOrderDO);
shipperParam(stockInOrderDO);
//设置供应商信息
// supplierParam(stockInOrderDO);
supplierParam(stockInOrderDO);
//设置数据字典键值
// setDataDict(stockInOrderDO);
setDataDict(stockInOrderDO);
return stockInOrderDomainService.update(stockInOrderDO);
}
@@ -396,11 +396,11 @@ public class StockInOrderApplicationService {
InMaterialDetailDO d = new InMaterialDetailDO();
d.setMaterialBaseInfoId(materialBaseInfoId);
d.setQuantity(quantity);
d.setSpecification(r.getSpecification());
d.setSpecificationModel(r.getSpecificationModel());
d.setSkuCode(r.getSkuCode());
d.setInvoiceNo(r.getInvoiceNo());
d.setDeclaredQuantity(r.getDeclaredQuantity());
d.setDeclaredUnit(r.getDeclaredUnit());
d.setDeclarationUnit(r.getDeclarationUnit());
d.setLiter(r.getLiter());
d.setBoxCount(r.getBoxCount());
d.setPieceCount(r.getPieceCount());
@@ -413,7 +413,7 @@ public class StockInOrderApplicationService {
d.setTotalArea(r.getTotalArea());
d.setBatchRefNo(r.getBatchRefNo());
d.setSheetRefNo(r.getSheetRefNo());
d.setCountryOfOrigin(r.getCountryOfOrigin());
d.setOriginCountry(r.getOriginCountry());
d.setBoxPalletNo(r.getBoxPalletNo());
d.setTotalPrice(r.getTotalPrice());
d.setCurrency(r.getCurrency());
@@ -39,6 +39,7 @@ import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainServi
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mhd.common.core.utils.StringUtils;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
@@ -87,8 +88,8 @@ public class StockReceiptOrderApplicationService {
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
// stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
return stockReceiptOrderDomainService.queryList(stockReceiptOrderDO);
}
@@ -162,7 +163,21 @@ public class StockReceiptOrderApplicationService {
* @return Boolean
*/
public Boolean taskDistribution(StockReceiptOrderDO stockReceiptOrderDO){
//设置作业人员信息
//获取收货单信息,用于获取仓库ID
if (stockReceiptOrderDO.getReceiptOrderIds() != null && stockReceiptOrderDO.getReceiptOrderIds().size() > 0) {
StockReceiptOrderDO queryDO = new StockReceiptOrderDO();
queryDO.setReceiptOrderId(stockReceiptOrderDO.getReceiptOrderIds().get(0));
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(queryDO.getReceiptOrderId());
if (stockReceiptOrderPO != null && stockReceiptOrderPO.getWarehouseId() != null) {
//查询该仓库绑定的用户ID列表
AjaxResult ajaxResult = systemServiceFeign.queryListCorrelationId(stockReceiptOrderPO.getWarehouseId());
if ("200".equals(String.valueOf(ajaxResult.get("code")))) {
List<Long> warehouseUserIds = JSON.parseArray(JSONUtil.toJsonStr(ajaxResult.get("data")), Long.class);
stockReceiptOrderDO.setWarehouseUserIds(warehouseUserIds);
}
}
}
//设置作业人员信息(会验证操作人员是否属于该仓库绑定的用户)
operatorsParam(stockReceiptOrderDO);
return stockReceiptOrderDomainService.taskDistribution(stockReceiptOrderDO);
}
@@ -313,6 +328,15 @@ public class StockReceiptOrderApplicationService {
* @param stockReceiptOrderDO
*/
private void operatorsParam(StockReceiptOrderDO stockReceiptOrderDO){
if (stockReceiptOrderDO.getOperatorsBy() == null) {
throw new ServiceException("操作人员不能为空");
}
//如果指定了仓库绑定的用户列表,验证操作人员是否在该列表中
if (stockReceiptOrderDO.getWarehouseUserIds() != null && !stockReceiptOrderDO.getWarehouseUserIds().isEmpty()) {
if (!stockReceiptOrderDO.getWarehouseUserIds().contains(stockReceiptOrderDO.getOperatorsBy())) {
throw new ServiceException("操作人员必须属于当前收货单对应仓库绑定的用户");
}
}
AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getOperatorsBy());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取作业人员信息失败");
@@ -591,7 +615,7 @@ public class StockReceiptOrderApplicationService {
*/
private void setMaterialMoreDetailInfo(ReceiptMaterialDetailDO receiptMaterialDetailDO){
if(ObjectUtil.isNotNull(receiptMaterialDetailDO.getMaterialStatusCode())){
if(ObjectUtil.isNotNull(receiptMaterialDetailDO.getMaterialStatusCode()) && StringUtils.isNotBlank(receiptMaterialDetailDO.getMaterialStatusCode())){
//翻译物料状态
AjaxResult materialsStatusResult = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode());
if (!"200".equals(String.valueOf(materialsStatusResult.get("code")))) {
@@ -67,8 +67,8 @@ public class StockShelfOrderApplicationService {
if (topOrganizationId != null && topOrganizationId != 1){
stockShelfOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
// stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
return stockShelfOrderDomainService.queryList(stockShelfOrderDO);
}
@@ -245,7 +245,7 @@ public class StockShelfOrderApplicationService {
//设置上架信息
setStorageLocationInfo(shelfMaterialDetailDO);
//设置容器信息
setContainerInfo(shelfMaterialDetailDO);
// setContainerInfo(shelfMaterialDetailDO);
//上架后 设置该记录不允许被修改
shelfMaterialDetailDO.setAllowModify(2);
//未上过架 统计到当前收货单作业收货数
@@ -267,7 +267,7 @@ public class StockShelfOrderApplicationService {
//设置上架信息
setStorageLocationInfo(shelfMaterialDetailDOChild);
//设置容器信息
setContainerInfo(returnShelfMaterialDetailDOChild);
// setContainerInfo(returnShelfMaterialDetailDOChild);
//上架后 设置该记录不允许被修改
shelfMaterialDetailDO.setAllowModify(2);
returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChild.getMaterialDetailSerialNumberList());
@@ -348,18 +348,18 @@ public class StockShelfOrderApplicationService {
* @date 2024/5/23 14:03
* @param shelfMaterialDetailDO
*/
private void setContainerInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){
//获取容器详情
AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取容器信息失败");
}
ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
shelfMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode());
shelfMaterialDetailDO.setContainerType(containerFeignPO.getContainerType());
shelfMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName());
}
// private void setContainerInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){
//
// //获取容器详情
// AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId());
// if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
// throw new ServiceException("获取容器信息失败");
// }
// ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
// shelfMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode());
// shelfMaterialDetailDO.setContainerType(containerFeignPO.getContainerType());
// shelfMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName());
// }
/**
* @description 判断上架数量是否存在超收
@@ -253,12 +253,12 @@ public class InMaterialDetail extends BaseVOEntity {
private Long overStockType;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号/ITEM")
@ApiModelProperty("规格型号")
@Excel(name = "规格型号/ITEM")
private String specification;
private String specificationModel;
@ApiModelProperty("商品SKU码")
@Excel(name = "商品SKU码")
@ApiModelProperty("SKU码")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@@ -275,7 +275,7 @@ public class InMaterialDetail extends BaseVOEntity {
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declaredUnit;
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@@ -287,7 +287,7 @@ public class InMaterialDetail extends BaseVOEntity {
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@@ -264,12 +264,12 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
private Long overStockType;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号/ITEM")
@ApiModelProperty("规格型号")
@Excel(name = "规格型号/ITEM")
private String specification;
private String specificationModel;
@ApiModelProperty("商品SKU码")
@Excel(name = "商品SKU码")
@ApiModelProperty("SKU码")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@@ -286,7 +286,7 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declaredUnit;
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@@ -298,7 +298,7 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@@ -260,12 +260,12 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
private List<String> inOrderNumberList;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号/ITEM(选择物料后自动带出,不可编辑)")
@ApiModelProperty("规格型号(选择物料后自动带出,不可编辑)")
@Excel(name = "规格型号/ITEM")
private String specification;
private String specificationModel;
@ApiModelProperty("商品SKU码(选择物料后自动带出,不可编辑)")
@Excel(name = "商品SKU码")
@ApiModelProperty("SKU码(选择物料后自动带出,不可编辑)")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@@ -282,7 +282,7 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declaredUnit;
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@@ -294,7 +294,7 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@@ -107,7 +107,6 @@ public class StockInOrderDomainService {
/**
* 批量新增入库单
*/
@Transactional(rollbackFor = Exception.class)
public Boolean batchInsert(List<StockInOrderDO> stockInOrderDOList) {
for (StockInOrderDO stockInOrderDO : stockInOrderDOList){
if (StringUtils.isBlank(stockInOrderDO.getInOrderNumber())){
@@ -409,12 +408,12 @@ public class StockInOrderDomainService {
//自动填充规格型号和SKU码(如果物料基础信息中有相关字段且明细中未设置)
//规格型号:优先使用物料种类名称,如果为空则使用物料类型名称
if (StringUtils.isBlank(inMaterialDetailDO.getSpecification())) {
if (StringUtils.isBlank(inMaterialDetailDO.getSpecificationModel())) {
if (StringUtils.isNotBlank(materialBaseInfoPO.getMaterialTypeName())) {
inMaterialDetailDO.setSpecification(materialBaseInfoPO.getMaterialTypeName());
inMaterialDetailDO.setSpecificationModel(materialBaseInfoPO.getMaterialTypeName());
}
}
//商品SKU码:使用物料条形码
//SKU码:使用物料条形码
if (StringUtils.isBlank(inMaterialDetailDO.getSkuCode())) {
if (StringUtils.isNotBlank(materialBaseInfoPO.getBarCode())) {
inMaterialDetailDO.setSkuCode(materialBaseInfoPO.getBarCode());
@@ -158,4 +158,7 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO {
@ApiModelProperty("物料明细")
private List<ReceiptMaterialDetailDO> materialDetailList;
@ApiModelProperty("仓库绑定的用户ID列表(用于任务下发时筛选操作人员)")
private List<Long> warehouseUserIds;
}
@@ -53,6 +53,9 @@ import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrder
import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
import com.mhd.wms.domain.stockReceiptOrder.repository.todo.NoReceiptOrderDO;
import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO;
import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService;
import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO;
@@ -88,6 +91,8 @@ public class StockReceiptOrderDomainService {
@Autowired
private StockShelfOrderDomainService stockShelfOrderDomainService;
@Autowired
private IStockShelfOrderService stockShelfOrderService;
@Autowired
private IQualityInspectionService qualityInspectionService;
@Autowired
private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService;
@@ -145,6 +150,7 @@ public class StockReceiptOrderDomainService {
receiptMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
receiptMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
receiptMaterialDetail.setReceiptOrderNumber(stockReceiptOrder.getReceiptOrderNumber());
receiptMaterialDetail.setGenStockShelf(2); // 设置需要生成上架单
receiptMaterialDetail.setCreateBy(loginUser.getUserid());
receiptMaterialDetail.setCreateByName(loginUser.getUsername());
receiptMaterialDetail.setCreateTime(new Date());
@@ -455,6 +461,40 @@ public class StockReceiptOrderDomainService {
//根据收货数量生成上架
genStockShelfOrder(stockReceiptOrderPO);
//收货完成后自动生成上架任务
try {
//查询刚生成的上架单
StockShelfOrderDO stockShelfOrderDOQuery = new StockShelfOrderDO();
stockShelfOrderDOQuery.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
stockShelfOrderDOQuery.setTaskDistribution(2); // 查询未下发的上架单
List<StockShelfOrderPO> stockShelfOrderPOList = stockShelfOrderService.queryList(stockShelfOrderDOQuery);
if (!CollectionUtils.isEmpty(stockShelfOrderPOList)) {
//创建上架任务参数
StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO();
stockShelfOrderDO.setShelfOrderIds(stockShelfOrderPOList.stream()
.map(StockShelfOrderPO::getShelfOrderId)
.collect(Collectors.toList()));
//如果没有指定操作人员,使用当前登录用户
if (stockShelfOrderDO.getOperatorsBy() == null) {
stockShelfOrderDO.setOperatorsBy(loginUser.getUserid());
stockShelfOrderDO.setOperatorsName(loginUser.getUsername());
}
//生成上架任务
stockShelfOrderDomainService.genDeliveTask(stockShelfOrderPOList, stockShelfOrderDO);
//标记上架单任务已下发
stockShelfOrderService.update(null, new UpdateWrapper<StockShelfOrder>().lambda()
.set(StockShelfOrder::getTaskDistribution, 1)
.set(StockShelfOrder::getTaskDistributionTime, new Date())
.set(StockShelfOrder::getUpdateBy, loginUser.getUserid())
.set(StockShelfOrder::getUpdateByName, loginUser.getUsername())
.set(StockShelfOrder::getUpdateTime, new Date())
.in(StockShelfOrder::getShelfOrderId, stockShelfOrderDO.getShelfOrderIds()));
}
} catch (Exception e) {
//如果生成上架任务失败,记录日志但不影响收货完成流程
log.error("收货完成后生成上架任务失败,收货单号:{}", stockReceiptOrderPO.getReceiptOrderNumber(), e);
}
//生成收货追溯记录
genInventoryStandingDetail(stockReceiptOrderPO);
//存在异常 生成记录
@@ -264,12 +264,12 @@ public class InMaterialDetailDTO extends BaseVOEntity {
private Integer isDifferentType;
// ========== 报关相关明细字段 ==========
@ApiModelProperty("规格型号/ITEM(选择物料后自动带出,不可编辑)")
@ApiModelProperty("规格型号(选择物料后自动带出,不可编辑)")
@Excel(name = "规格型号/ITEM")
private String specification;
private String specificationModel;
@ApiModelProperty("商品SKU码(选择物料后自动带出,不可编辑)")
@Excel(name = "商品SKU码")
@ApiModelProperty("SKU码(选择物料后自动带出,不可编辑)")
@Excel(name = "SKU码")
private String skuCode;
@ApiModelProperty("Invoice No.")
@@ -286,7 +286,7 @@ public class InMaterialDetailDTO extends BaseVOEntity {
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declaredUnit;
private String declarationUnit;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@@ -298,7 +298,7 @@ public class InMaterialDetailDTO extends BaseVOEntity {
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
private String originCountry;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@@ -190,4 +190,28 @@ public class MaterialBaseInfoDTO extends BaseVOEntity {
@ApiModelProperty("是否公用: 1-是 2-否")
@Excel(name = "是否公用: 1-是 2-否")
private Integer common;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("币制")
private String currency;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
}