上架的批次属性显示修改

This commit is contained in:
秦鸿展
2026-01-30 11:31:11 +08:00
parent 9aa72e44d7
commit fe096a498f
6 changed files with 546 additions and 6 deletions
@@ -1,6 +1,7 @@
package com.mhd.wms.domain.materialInventory.entity;
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;
@@ -167,51 +168,61 @@ public class MaterialInventory extends BaseVOEntity {
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@TableField(exist = false)
private String batchRefNo;
@ApiModelProperty("Sheet Ref NO's")
@Excel(name = "Sheet Ref NO's")
@TableField(exist = false)
private String sheetRefNo;
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@TableField(exist = false)
private String boxPalletNo;
@ApiModelProperty("扩展字段1")
@Excel(name = "扩展字段1")
@TableField(exist = false)
private String extAttr1;
@ApiModelProperty("扩展字段2")
@Excel(name = "扩展字段2")
@TableField(exist = false)
private String extAttr2;
@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")
@TableField(exist = false)
private Date productionDate;
@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")
@TableField(exist = false)
private Date expiryDate;
@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")
@TableField(exist = false)
private Date inventoryDate;
@ApiModelProperty("ExtAttr3")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "ExtAttr3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(exist = false)
private Date extAttr3;
@ApiModelProperty("ExtAttr4")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "ExtAttr4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(exist = false)
private Date extAttr4;
}
@@ -1,12 +1,19 @@
package com.mhd.wms.domain.shelfMaterialDetail.repository.persistence;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber;
import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService;
import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO;
import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail;
import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService;
import com.mhd.wms.domain.shelfMaterialDetail.repository.mapper.ShelfMaterialDetailMapper;
@@ -19,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
@@ -37,6 +45,10 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
private ShelfMaterialDetailMapper shelfMaterialDetailMapper;
@Autowired
private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService;
@Resource
private SystemServiceFeign systemServiceFeign;
@Autowired
private IMaterialMoreDetailService IMaterialMoreDetailService;
/**
* 查询物料明细列表
@@ -54,11 +66,44 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
public List<ShelfMaterialDetailPO> queryListChildren(ShelfMaterialDetailDO shelfMaterialDetailDO) {
List<ShelfMaterialDetailPO> shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO);
//回显带上更多属性值(批次标签)
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
materialMoreDetailDO.setMaterialDetailUniqueId(shelfMaterialDetailPO.getUniqueId());
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
//如果上架单的物料批属性还没存入值,那么需要从批属性表获取
AjaxResult ajaxResult = null;
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId());
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class);
}
}
shelfMaterialDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
});
// 获取查询的层级
List<ShelfMaterialDetailPO> receiptMaterialDetailPOParentList = shelfMaterialDetailPOList
.stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList());
// 递归查询子集
receiptMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2)));
for(ShelfMaterialDetailPO materialDetailPO : receiptMaterialDetailPOParentList){
List<ShelfMaterialDetailPO> children = getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2);
children.forEach(childrenDetailPO -> {
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
materialMoreDetailDO.setMaterialDetailUniqueId(childrenDetailPO.getUniqueId());
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
//如果上架单的物料批属性还没存入值,那么需要从批属性表获取
AjaxResult ajaxResult = null;
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId());
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class);
}
}
childrenDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
});
materialDetailPO.setChildren(children);
}
return receiptMaterialDetailPOParentList;
}
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -259,6 +260,9 @@ public class ShelfMaterialDetailPO extends BaseVOEntity {
@ApiModelProperty("序列号")
private List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberList;
@ApiModelProperty("更多属性")
private List<MaterialMoreDetailPO> materialMoreDetailList;
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
private String batchRefNo;
@@ -673,12 +673,64 @@ public class StockReceiptOrderDomainService {
shelfMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity());
shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailDO.getInUniqueId());
shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId());
// 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4
shelfMaterialDetailDO.setProductionDate(receiptMaterialDetailDO.getProductionDate());
shelfMaterialDetailDO.setExpiryDate(receiptMaterialDetailDO.getExpiryDate());
shelfMaterialDetailDO.setInventoryDate(receiptMaterialDetailDO.getInventoryDate());
shelfMaterialDetailDO.setBatchRefNo(receiptMaterialDetailDO.getBatchRefNo());
shelfMaterialDetailDO.setSheetRefNo(receiptMaterialDetailDO.getSheetRefNo());
shelfMaterialDetailDO.setBoxPalletNo(receiptMaterialDetailDO.getBoxPalletNo());
shelfMaterialDetailDO.setExtAttr1(receiptMaterialDetailDO.getExtAttr1());
shelfMaterialDetailDO.setExtAttr2(receiptMaterialDetailDO.getExtAttr2());
// extAttr3和extAttr4在ReceiptMaterialDetailDO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换
if (receiptMaterialDetailDO.getExtAttr3() != null && !receiptMaterialDetailDO.getExtAttr3().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr3(sdf.parse(receiptMaterialDetailDO.getExtAttr3()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
if (receiptMaterialDetailDO.getExtAttr4() != null && !receiptMaterialDetailDO.getExtAttr4().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr4(sdf.parse(receiptMaterialDetailDO.getExtAttr4()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
receiptMaterialDetailDO.getChildren().forEach(receiptMaterialDetailDOChildren -> {
ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO();
BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren);
shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity());
shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailDO.getInUniqueId());
shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId());
// 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4
shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate());
shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate());
shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate());
shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo());
shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo());
shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo());
shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1());
shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2());
// extAttr3和extAttr4在ReceiptMaterialDetailDO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换
if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren);
});
shelfMaterialDetailDOList.add(shelfMaterialDetailDO);
@@ -739,9 +791,32 @@ public class StockReceiptOrderDomainService {
shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity());
shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId());
// 从入库单明细中获取净重、毛重、体积、面积等字段
// 注意:由于 ShelfMaterialDetailDO 中没有这些字段,这些字段需要在查询时通过关联查询获取
// 或者需要先在上架单明细实体类中添加这些字段
// 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4
shelfMaterialDetailDO.setProductionDate(receiptMaterialDetailPO.getProductionDate());
shelfMaterialDetailDO.setExpiryDate(receiptMaterialDetailPO.getExpiryDate());
shelfMaterialDetailDO.setInventoryDate(receiptMaterialDetailPO.getInventoryDate());
shelfMaterialDetailDO.setBatchRefNo(receiptMaterialDetailPO.getBatchRefNo());
shelfMaterialDetailDO.setSheetRefNo(receiptMaterialDetailPO.getSheetRefNo());
shelfMaterialDetailDO.setBoxPalletNo(receiptMaterialDetailPO.getBoxPalletNo());
shelfMaterialDetailDO.setExtAttr1(receiptMaterialDetailPO.getExtAttr1());
shelfMaterialDetailDO.setExtAttr2(receiptMaterialDetailPO.getExtAttr2());
// extAttr3和extAttr4在ReceiptMaterialDetailPO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换
if (receiptMaterialDetailPO.getExtAttr3() != null && !receiptMaterialDetailPO.getExtAttr3().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr3(sdf.parse(receiptMaterialDetailPO.getExtAttr3()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
if (receiptMaterialDetailPO.getExtAttr4() != null && !receiptMaterialDetailPO.getExtAttr4().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr4(sdf.parse(receiptMaterialDetailPO.getExtAttr4()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
shelfMaterialDetailDOList.add(shelfMaterialDetailDO);
receiptQuantity = receiptQuantity.add(receiptMaterialDetailPO.getReceiptQuantity());
}
@@ -799,12 +874,64 @@ public class StockReceiptOrderDomainService {
shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity());
shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId());
// 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4
shelfMaterialDetailDO.setProductionDate(receiptMaterialDetailPO.getProductionDate());
shelfMaterialDetailDO.setExpiryDate(receiptMaterialDetailPO.getExpiryDate());
shelfMaterialDetailDO.setInventoryDate(receiptMaterialDetailPO.getInventoryDate());
shelfMaterialDetailDO.setBatchRefNo(receiptMaterialDetailPO.getBatchRefNo());
shelfMaterialDetailDO.setSheetRefNo(receiptMaterialDetailPO.getSheetRefNo());
shelfMaterialDetailDO.setBoxPalletNo(receiptMaterialDetailPO.getBoxPalletNo());
shelfMaterialDetailDO.setExtAttr1(receiptMaterialDetailPO.getExtAttr1());
shelfMaterialDetailDO.setExtAttr2(receiptMaterialDetailPO.getExtAttr2());
// extAttr3和extAttr4在ReceiptMaterialDetailPO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换
if (receiptMaterialDetailPO.getExtAttr3() != null && !receiptMaterialDetailPO.getExtAttr3().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr3(sdf.parse(receiptMaterialDetailPO.getExtAttr3()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
if (receiptMaterialDetailPO.getExtAttr4() != null && !receiptMaterialDetailPO.getExtAttr4().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDO.setExtAttr4(sdf.parse(receiptMaterialDetailPO.getExtAttr4()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
receiptMaterialDetailPO.getChildren().forEach(receiptMaterialDetailDOChildren -> {
ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO();
BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren);
shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity());
shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId());
// 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4
shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate());
shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate());
shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate());
shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo());
shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo());
shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo());
shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1());
shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2());
// extAttr3和extAttr4在ReceiptMaterialDetailPO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换
if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4()));
} catch (Exception e) {
// 如果转换失败,不设置该字段
}
}
shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren);
});
shelfMaterialDetailDOList.add(shelfMaterialDetailDO);