fix(oms):入库业务单导入件数未回显计划数量
- 导入模版去掉Qty(cases)列(5列布局),饮用日期列位前移 - 明细计划数量由Qty箱数改为"件数"取值,件数同步落库PIECE_COUNT用于列表回显 - 物料在当前登录组织下不存在时返回明确提示,替代货主列表取值越界导致的500
This commit is contained in:
+3
-5
@@ -102,7 +102,7 @@ public class StockInExcelListener extends AnalysisEventListener<Map<String, Obje
|
||||
|
||||
/**
|
||||
* 解析产品明细数据(一行对应一个产品)
|
||||
* 新模板列顺序:0=产品编号,1=产品名称,2=规格(箱含量),3=件数,4=Qty(cases)(箱数),5=饮用日期
|
||||
* 新模板列顺序:0=产品编号,1=产品名称,2=规格(箱含量),3=件数,4=饮用日期
|
||||
*/
|
||||
private StockInProductDetail parseProductDetail(Map<String, Object> data) {
|
||||
StockInProductDetail detail = new StockInProductDetail();
|
||||
@@ -115,10 +115,8 @@ public class StockInExcelListener extends AnalysisEventListener<Map<String, Obje
|
||||
detail.setBoxCapacity(convertToInteger(getValueSafely(data, 2)));
|
||||
// 件数(第4列,索引3)
|
||||
detail.setPieceCount(convertToInteger(getValueSafely(data, 3)));
|
||||
// 箱数/Qty(cases)(第5列,索引4)
|
||||
detail.setBoxCount(convertToInteger(getValueSafely(data, 4)));
|
||||
// 饮用日期(第6列,索引5)
|
||||
detail.setDrinkDate(convertToDate(getValueSafely(data, 5)));
|
||||
// 饮用日期(第5列,索引4)
|
||||
detail.setDrinkDate(convertToDate(getValueSafely(data, 4)));
|
||||
|
||||
LOGGER.debug("第{}行产品明细解析完成,产品编号:{},产品名称:{}",
|
||||
currentRowNum, detail.getProductCode(), detail.getProductName());
|
||||
|
||||
+11
-3
@@ -399,7 +399,11 @@ public class ReservationStockInOrderImpl extends ServiceImpl<ReservationStockInO
|
||||
Set<Long> processedShipperIds = new HashSet<>();
|
||||
for (StockInProductDetail productDetail : productDetailList) {
|
||||
MaterialBaseInfoPO materialBaseInfoPO = stockInOrderMapper.getByCode(productDetail.getProductCode(),loginUser.getUserPo().getOrganizationId());
|
||||
if (materialBaseInfoPO != null && materialBaseInfoPO.getShipperId() != null) {
|
||||
// 物料在当前登录组织下不存在时给出明确提示,避免后续货主取值越界导致500
|
||||
if (materialBaseInfoPO == null) {
|
||||
throw new ServiceException("产品编号[" + productDetail.getProductCode() + "]在当前组织下不存在,请核对产品编号或使用物料所属组织的账号导入");
|
||||
}
|
||||
if (materialBaseInfoPO.getShipperId() != null) {
|
||||
Long shipperId = materialBaseInfoPO.getShipperId();
|
||||
if (processedShipperIds.add(shipperId)) {
|
||||
Map<String, Object> shipper = new HashMap<>();
|
||||
@@ -410,6 +414,9 @@ public class ReservationStockInOrderImpl extends ServiceImpl<ReservationStockInO
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shipperIds.isEmpty()) {
|
||||
throw new ServiceException("导入的产品均未配置货主,请先在物料档案中维护货主信息");
|
||||
}
|
||||
ReservationStockInOrderDO reservationStockInOrderDO = new ReservationStockInOrderDO();
|
||||
// 生成业务单号
|
||||
String orderNumber = reservationStockInOrderDomainService.generateReserveOrderNumber();
|
||||
@@ -453,12 +460,13 @@ public class ReservationStockInOrderImpl extends ServiceImpl<ReservationStockInO
|
||||
reservationInMaterialDetailDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
reservationInMaterialDetailDO.setCreateTime(new Date());
|
||||
MaterialBaseInfoPO materialBaseInfoPO = stockInOrderMapper.getByCode(stockInProductDetail.getProductCode(),loginUser.getUserPo().getOrganizationId());
|
||||
reservationInMaterialDetailDO.setQuantity(new BigDecimal(stockInProductDetail.getBoxCount()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
// 计划数量取模版"件数"列,同时件数字段落库用于明细列表回显
|
||||
reservationInMaterialDetailDO.setQuantity(new BigDecimal(stockInProductDetail.getPieceCount()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
reservationInMaterialDetailDO.setPieceCount(new BigDecimal(stockInProductDetail.getPieceCount()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
if (materialBaseInfoPO != null) {
|
||||
reservationInMaterialDetailDO.setMaterialBaseInfoId(materialBaseInfoPO.getMaterialBaseInfoId());
|
||||
reservationInMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName());
|
||||
reservationInMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode());
|
||||
// reservationInMaterialDetailDO.setQuantity(new BigDecimal(stockInProductDetail.getPieceCount()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
BigDecimal unitPrice = materialBaseInfoPO.getUnitPrice();
|
||||
if (unitPrice != null) {
|
||||
reservationInMaterialDetailDO.setUnitPrice(unitPrice);
|
||||
|
||||
+3
-13
@@ -13,13 +13,11 @@ public class StockInProductDetail {
|
||||
private String productCode;
|
||||
// 产品名称(Excel第2列)
|
||||
private String productName;
|
||||
// 箱含量(Excel第5列)
|
||||
// 箱含量(Excel第3列)
|
||||
private Integer boxCapacity;
|
||||
// 件数(Excel第6列)
|
||||
// 件数(Excel第4列)
|
||||
private Integer pieceCount;
|
||||
// 箱数(Excel第7列:Qty(cases))
|
||||
private Integer boxCount;
|
||||
// 饮用日期(Excel第8列)
|
||||
// 饮用日期(Excel第5列)
|
||||
private Date drinkDate;
|
||||
|
||||
// Getter和Setter方法
|
||||
@@ -55,14 +53,6 @@ public class StockInProductDetail {
|
||||
this.pieceCount = pieceCount;
|
||||
}
|
||||
|
||||
public Integer getBoxCount() {
|
||||
return boxCount;
|
||||
}
|
||||
|
||||
public void setBoxCount(Integer boxCount) {
|
||||
this.boxCount = boxCount;
|
||||
}
|
||||
|
||||
public Date getDrinkDate() {
|
||||
return drinkDate;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user