45527 礼嘉福特发运单打印-优化

uat-temp-logic-20250307-45527
logic.fang 2 months ago
parent a53f97b8a0
commit 2592f341fe

@ -177,44 +177,26 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
Map<Long, List<MesShippingOrderManagementDetail>> detailByPidMap = shippingOrderManagementDetailList Map<Long, List<MesShippingOrderManagementDetail>> detailByPidMap = shippingOrderManagementDetailList
.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getPid)); .stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getPid));
log.info("doMesMesShippingOrderManagementPrint-查询发运单明细信息-detailByPidMap-" + detailByPidMap.size()); log.info("doMesMesShippingOrderManagementPrint-查询发运单明细信息-detailByPidMap-" + detailByPidMap.size());
/**
*
*/
Set<Long> partShippingGroupIdSet = pullingOrderInfos.stream()
.map(MesShippingOrderManagement::getPartShippingGroupId).collect(Collectors.toSet());
liJIaPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getInPackList(new ArrayList<>(partShippingGroupIdSet), "pid", liJIaPackBean);
List<MesPartShippingGroupDetail> partShippingGroupDetailList =
mesPartShippingGroupDetailRepository.findByHqlWhere(liJIaPackBean);
log.info("doMesMesShippingOrderManagementPrint-查询零件发运组明细信息-" + partShippingGroupDetailList.size());
Map<Long, List<MesPartShippingGroupDetail>> listMap = partShippingGroupDetailList.stream().collect(
Collectors.groupingBy(MesPartShippingGroupDetail::getPid));
log.info("doMesMesShippingOrderManagementPrint-查询零件发运组明细信息-listMap-" + listMap.size());
//遍历处理每个发运单主表 //遍历处理每个发运单主表
for (MesShippingOrderManagement pullingOrderInfo : pullingOrderInfos) { for (MesShippingOrderManagement pullingOrderInfo : pullingOrderInfos) {
//一张实体发运单包含三部分信息(顶部的通用数据、中部的第一份表格数据,底部的第二份表格数据) //一张实体发运单包含三部分信息(顶部的通用数据、中部的第一份表格数据,底部的第二份表格数据)
//取出当前发运单的明细信息 //取出当前发运单的明细信息
List<MesShippingOrderManagementDetail> details = detailByPidMap.get(pullingOrderInfo.getId()); List<MesShippingOrderManagementDetail> details = detailByPidMap.get(pullingOrderInfo.getId());
if (!CollectionUtils.isEmpty(details)) { if (!CollectionUtils.isEmpty(details)) {
//取出当前发运单主表对应的发运组明细信息 //将发运单明细按照 assyCode 分组
List<MesPartShippingGroupDetail> shippingGroupDetailList = listMap.get(pullingOrderInfo.getPartShippingGroupId()); //assyCode 的个数 / 2 代表会生成实体发运单的份数(一个 assyCode 就是一个表格,一份实体表单上可以放两个表格)
if (!CollectionUtils.isEmpty(shippingGroupDetailList)) { Map<String, List<MesShippingOrderManagementDetail>> detailByAssyCodeMap =
//将发运组明细按照 seq_no 分组 details.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getAssyCode));
//seq_no 的个数 / 2 代表会生成实体发运单的份数(一个 seq_no 就是一个表格,一份实体表单上可以放两个表格) List<String> assyCodeList = new ArrayList<>(detailByAssyCodeMap.keySet());
Map<Integer, List<MesPartShippingGroupDetail>> seqNoMap = //将 assyCode 两两分组
shippingGroupDetailList.stream().collect(Collectors.groupingBy(MesPartShippingGroupDetail::getSeqNo)); List<List<String>> physicalOrderList = IntStream.range(0, assyCodeList.size())
List<Integer> seqNoList = new ArrayList<>(seqNoMap.keySet()); .filter(i -> i % 2 == 0)
log.info("doMesMesShippingOrderManagementPrint-查询零件发运组明细信息-seqNoList-" + seqNoList.size()); .mapToObj(i -> assyCodeList.subList(i, Math.min(i + 2, assyCodeList.size())))
//将seq_no两两分组 .collect(Collectors.toList());
List<List<Integer>> physicalOrderList = IntStream.range(0, seqNoList.size()) for (List<String> list : physicalOrderList) {
.filter(i -> i % 2 == 0) //生成一张实体发运单
.mapToObj(i -> seqNoList.subList(i, Math.min(i + 2, seqNoList.size()))) log.info("doMesMesShippingOrderManagementPrint-生成一张实体发运单-list-" + list);
.collect(Collectors.toList()); mainDataList.add(createPhysicalOrder(pullingOrderInfo, list, detailByAssyCodeMap, details));
for (List<Integer> list : physicalOrderList) {
//生成一张实体发运单
log.info("doMesMesShippingOrderManagementPrint-生成一张实体发运单-list-" + list);
mainDataList.add(createPhysicalOrder(pullingOrderInfo, list, seqNoMap, details));
}
} }
} }
pullingOrderInfo.setPrintCount(StringUtil.isEmpty(pullingOrderInfo.getPrintCount())? 1 : pullingOrderInfo.getPrintCount()+1); pullingOrderInfo.setPrintCount(StringUtil.isEmpty(pullingOrderInfo.getPrintCount())? 1 : pullingOrderInfo.getPrintCount()+1);
@ -267,8 +249,8 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
} }
private MesShippingOrderManagementModelForLiJia createPhysicalOrder(MesShippingOrderManagement pullingOrderInfo, private MesShippingOrderManagementModelForLiJia createPhysicalOrder(MesShippingOrderManagement pullingOrderInfo,
List<Integer> seqNoList, List<String> assyCodeList,
Map<Integer, List<MesPartShippingGroupDetail>> seqNoMap, Map<String, List<MesShippingOrderManagementDetail>> detailByAssyCodeMap,
List<MesShippingOrderManagementDetail> details) { List<MesShippingOrderManagementDetail> details) {
MesShippingOrderManagementModelForLiJia model = new MesShippingOrderManagementModelForLiJia(); MesShippingOrderManagementModelForLiJia model = new MesShippingOrderManagementModelForLiJia();
//顶部的通用数据赋值 //顶部的通用数据赋值
@ -278,31 +260,25 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
model.setDocumentNumber("YFVCQ-MS06-02-01"); model.setDocumentNumber("YFVCQ-MS06-02-01");
log.info("doMesMesShippingOrderManagementPrint-顶部的通用数据赋值" + model); log.info("doMesMesShippingOrderManagementPrint-顶部的通用数据赋值" + model);
//中部表结构赋值 //中部表结构赋值
model.setDetailModelsOne(createDetailList(seqNoList.get(0), seqNoMap, details, pullingOrderInfo.getRackNo())); model.setDetailModelsOne(createDetailList(assyCodeList.get(0), detailByAssyCodeMap, details, pullingOrderInfo.getRackNo()));
log.info("doMesMesShippingOrderManagementPrint-中部表结构赋值" + model); log.info("doMesMesShippingOrderManagementPrint-中部表结构赋值" + model);
//底部表结构赋值 //底部表结构赋值
model.setDetailModelsTwo(createDetailList(seqNoList.get(1), seqNoMap, details, pullingOrderInfo.getRackNo())); model.setDetailModelsTwo(createDetailList(assyCodeList.get(1), detailByAssyCodeMap, details, pullingOrderInfo.getRackNo()));
log.info("doMesMesShippingOrderManagementPrint-底部表结构赋值" + model); log.info("doMesMesShippingOrderManagementPrint-底部表结构赋值" + model);
return model; return model;
} }
private List<MesShippingOrderManagementDetailModelForLiJia> createDetailList( private List<MesShippingOrderManagementDetailModelForLiJia> createDetailList(
Integer seqNo, Map<Integer, List<MesPartShippingGroupDetail>> seqNoMap, String assyCode, Map<String, List<MesShippingOrderManagementDetail>> detailByAssyCodeMap,
List<MesShippingOrderManagementDetail> details, String rackNo) { List<MesShippingOrderManagementDetail> details, String rackNo) {
List<MesShippingOrderManagementDetailModelForLiJia> dataList = new ArrayList<>(); List<MesShippingOrderManagementDetailModelForLiJia> dataList = new ArrayList<>();
//取出发运组明细数据
List<MesPartShippingGroupDetail> partShippingGroupDetailList = seqNoMap.get(seqNo);
Set<String> custPartNoSet = partShippingGroupDetailList.stream()
.map(MesPartShippingGroupDetail::getCustPartNo).collect(Collectors.toSet());
log.info("doMesMesShippingOrderManagementPrint-createDetailList-partShippingGroupDetailList" + partShippingGroupDetailList.size());
//取出符合条件的发运单明细数据 //取出符合条件的发运单明细数据
List<MesShippingOrderManagementDetail> nowDetailList = details.stream().filter(t -> List<MesShippingOrderManagementDetail> nowDetailList = detailByAssyCodeMap.get(assyCode);
custPartNoSet.contains(t.getCustPartNo())).collect(Collectors.toList());
log.info("doMesMesShippingOrderManagementPrint-createDetailList-nowDetailList" + nowDetailList.size()); log.info("doMesMesShippingOrderManagementPrint-createDetailList-nowDetailList" + nowDetailList.size());
if (!CollectionUtils.isEmpty(nowDetailList)) { if (!CollectionUtils.isEmpty(nowDetailList)) {
//并按照 cust_info_seq 升序排列 //并按照 logic_seq 升序排列
List<MesShippingOrderManagementDetail> collect = nowDetailList.stream().sorted( List<MesShippingOrderManagementDetail> collect = nowDetailList.stream().sorted(
Comparator.comparing(MesShippingOrderManagementDetail::getCustInfoSeq)).collect(Collectors.toList()); Comparator.comparing(MesShippingOrderManagementDetail::getLogicSeq)).collect(Collectors.toList());
Integer number = 1; Integer number = 1;
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : collect) { for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : collect) {
MesShippingOrderManagementDetailModelForLiJia detailModel = new MesShippingOrderManagementDetailModelForLiJia(); MesShippingOrderManagementDetailModelForLiJia detailModel = new MesShippingOrderManagementDetailModelForLiJia();

Loading…
Cancel
Save