PC收货修改
This commit is contained in:
+69
-5
@@ -1,12 +1,19 @@
|
||||
package com.mhd.wms.interfaces.assember.stockReceiptOrder;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.core.utils.bean.BeanUtils;
|
||||
import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
|
||||
import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
|
||||
import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO;
|
||||
import com.mhd.wms.interfaces.dto.materialMoreDetail.MaterialMoreDetailDTO;
|
||||
import com.mhd.wms.interfaces.dto.receiptMaterialDetail.ReceiptMaterialDetailDTO;
|
||||
import com.mhd.wms.interfaces.dto.stockReceiptOrder.StockReceiptOrderDTO;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 收货单Assembler
|
||||
*
|
||||
@@ -30,11 +37,68 @@ public class StockReceiptOrderAssembler {
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换实体
|
||||
*/
|
||||
* 编辑/收货提交:DTO → DO。
|
||||
* Jackson/Hutool 对嵌套 {@code materialDetailList[].children} 与 {@code MaterialMoreDetailDTO}→DO 的中转易丢子行,
|
||||
* 导致子项 {@code receiptQuantity} 为 null、不生成收货明细。此处显式递归拷贝,保证子树完整。
|
||||
*/
|
||||
public StockReceiptOrderDO toDOByEdit(StockReceiptOrderDTO stockReceiptOrderDTO) {
|
||||
// 拷贝
|
||||
return JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDTO), StockReceiptOrderDO.class);
|
||||
StockReceiptOrderDO target = new StockReceiptOrderDO();
|
||||
String[] topIgnore = appendIgnores(IgnoreNullUtil.getNullPropertyNames(stockReceiptOrderDTO), "materialDetailList");
|
||||
BeanUtils.copyProperties(stockReceiptOrderDTO, target, topIgnore);
|
||||
target.setMaterialDetailList(convertMaterialDetailRows(stockReceiptOrderDTO.getMaterialDetailList()));
|
||||
return target;
|
||||
}
|
||||
|
||||
private static String[] appendIgnores(String[] base, String... extra) {
|
||||
if (extra == null || extra.length == 0) {
|
||||
return base;
|
||||
}
|
||||
String[] out = Arrays.copyOf(base, base.length + extra.length);
|
||||
System.arraycopy(extra, 0, out, base.length, extra.length);
|
||||
return out;
|
||||
}
|
||||
|
||||
private static List<ReceiptMaterialDetailDO> convertMaterialDetailRows(List<ReceiptMaterialDetailDTO> src) {
|
||||
if (src == null) {
|
||||
return null;
|
||||
}
|
||||
List<ReceiptMaterialDetailDO> list = new ArrayList<>(src.size());
|
||||
for (ReceiptMaterialDetailDTO row : src) {
|
||||
list.add(convertOneMaterialDetail(row));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private static ReceiptMaterialDetailDO convertOneMaterialDetail(ReceiptMaterialDetailDTO src) {
|
||||
if (src == null) {
|
||||
return null;
|
||||
}
|
||||
ReceiptMaterialDetailDO t = new ReceiptMaterialDetailDO();
|
||||
String[] ignore = appendIgnores(IgnoreNullUtil.getNullPropertyNames(src),
|
||||
"children", "materialMoreDetailList");
|
||||
BeanUtils.copyProperties(src, t, ignore);
|
||||
t.setMaterialMoreDetailList(convertMoreDetailList(src.getMaterialMoreDetailList()));
|
||||
t.setChildren(convertMaterialDetailRows(src.getChildren()));
|
||||
if (src.getMaterialDetailSerialNumberList() != null) {
|
||||
t.setMaterialDetailSerialNumberList(new ArrayList<>(src.getMaterialDetailSerialNumberList()));
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
private static List<MaterialMoreDetailDO> convertMoreDetailList(List<MaterialMoreDetailDTO> src) {
|
||||
if (src == null) {
|
||||
return null;
|
||||
}
|
||||
List<MaterialMoreDetailDO> list = new ArrayList<>(src.size());
|
||||
for (MaterialMoreDetailDTO m : src) {
|
||||
if (m == null) {
|
||||
continue;
|
||||
}
|
||||
MaterialMoreDetailDO d = new MaterialMoreDetailDO();
|
||||
BeanUtils.copyProperties(m, d, IgnoreNullUtil.getNullPropertyNames(m));
|
||||
list.add(d);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user