mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
订单详情、装配订单配件分页改为一次性返回
This commit is contained in:
+15
@@ -116,4 +116,19 @@ public class OrdersViewPartsPageDO {
|
||||
* 柜体名称
|
||||
*/
|
||||
private String bodyName;
|
||||
|
||||
/**
|
||||
* 加工组 id
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 加工组名称
|
||||
*/
|
||||
private String processGroupName;
|
||||
|
||||
/**
|
||||
* 部件名称
|
||||
*/
|
||||
private String componentName;
|
||||
}
|
||||
|
||||
+7
@@ -274,6 +274,13 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
||||
@Param("name") String name,
|
||||
@Param("deleted") Boolean deleted);
|
||||
|
||||
List<OrdersViewPartsPageDO> selectOrdersViewPartsList(@Param("orderIds") List<Long> orderIds,
|
||||
@Param("bodyIds") Set<Long> bodyIds,
|
||||
@Param("groupIds") Set<Long> groupIds,
|
||||
@Param("componentIds") Set<Long> componentIds,
|
||||
@Param("name") String name,
|
||||
@Param("deleted") Boolean deleted);
|
||||
|
||||
/**
|
||||
* 查询部件关联的板件ID列表
|
||||
*
|
||||
|
||||
+59
-132
@@ -56,12 +56,14 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Deque;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@@ -417,158 +419,83 @@ public class OrderComponentServiceImpl implements OrderComponentService {
|
||||
}
|
||||
|
||||
Set<Long> queryComponentIds = componentDOS.stream().map(OrderComponentDO::getId).collect(Collectors.toSet());
|
||||
// 整理出id和cadViewFileId的对应关系
|
||||
Map<Long, OrderComponentDO> cadViewFileIdMap = componentDOS.stream()
|
||||
.filter(item -> item.getCadViewFileId() != null)
|
||||
.collect(Collectors.toMap(
|
||||
OrderComponentDO::getId,
|
||||
Function.identity(),
|
||||
(a, b) -> a
|
||||
));
|
||||
boolean deleted = Boolean.TRUE.equals(pageReqVO.getDeleted());
|
||||
|
||||
Boolean deleted = pageReqVO.getDeleted();
|
||||
List<OrdersViewPartsPageDO> rows = orderItemMapper.selectOrdersViewPartsList(
|
||||
orderIds,
|
||||
null,
|
||||
null,
|
||||
queryComponentIds,
|
||||
null,
|
||||
deleted
|
||||
);
|
||||
|
||||
// 查询配件编号+信息
|
||||
PageDTO<OrdersViewPartsPageDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
IPage<OrdersViewPartsPageDO> pageRes = orderItemMapper.selectOrdersViewPartsIdsPage(page, orderIds, null, null, queryComponentIds, null, deleted);
|
||||
|
||||
List<OrdersViewPartsPageDO> partsPageRecords = pageRes.getRecords();
|
||||
if(CollUtil.isEmpty(partsPageRecords)) {
|
||||
if (CollUtil.isEmpty(rows)) {
|
||||
return new PageResult<>(Collections.emptyList(), 0L);
|
||||
}
|
||||
|
||||
List<Long> partsIds = partsPageRecords.stream().map(OrdersViewPartsPageDO::getId).toList();
|
||||
Collection<OrderViewPartPageRespVO> records = buildComponentViewPartsGroup(rows);
|
||||
return new PageResult<>(new ArrayList<>(records), (long) records.size());
|
||||
}
|
||||
|
||||
if (CollUtil.isEmpty(partsIds)) {
|
||||
return new PageResult<>();
|
||||
}
|
||||
// 查询关联关系
|
||||
List<OrderItemDO> orderItemRelation;
|
||||
if (!deleted) {
|
||||
orderItemRelation = orderItemMapper.selectList(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
.in(OrderItemDO::getOrderId, pageReqVO.getOrderIds())
|
||||
.in(OrderItemDO::getPartsId, partsIds)
|
||||
.and(wrapper ->
|
||||
wrapper.ne(OrderItemDO::getGroupId, 0L)
|
||||
.or()
|
||||
.isNull(OrderItemDO::getGroupId)
|
||||
)
|
||||
.select(OrderItemDO::getPartsId, OrderItemDO::getCadViewId, OrderItemDO::getGroupId, OrderItemDO::getCompId, OrderItemDO::getNum)
|
||||
);
|
||||
} else {
|
||||
List<OrderItemTempDO> orderItemTempDOS = orderItemTempMapper.selectList(new LambdaQueryWrapperX<OrderItemTempDO>()
|
||||
.in(OrderItemTempDO::getOrderId, pageReqVO.getOrderIds())
|
||||
.in(OrderItemTempDO::getPartsId, partsIds)
|
||||
.and(wrapper ->
|
||||
wrapper.ne(OrderItemTempDO::getGroupId, 0L)
|
||||
.or()
|
||||
.isNull(OrderItemTempDO::getGroupId)
|
||||
)
|
||||
.select(OrderItemTempDO::getPartsId, OrderItemTempDO::getCadViewId, OrderItemTempDO::getGroupId, OrderItemTempDO::getCompId, OrderItemTempDO::getNum)
|
||||
);
|
||||
orderItemRelation = BeanUtil.copyToList(orderItemTempDOS, OrderItemDO.class);
|
||||
}
|
||||
/**
|
||||
* 组装配件的加工组和部件
|
||||
*
|
||||
* @param rows
|
||||
* @return
|
||||
*/
|
||||
private Collection<OrderViewPartPageRespVO> buildComponentViewPartsGroup(List<OrdersViewPartsPageDO> rows) {
|
||||
Map<String, OrderViewPartPageRespVO> records = new LinkedHashMap<>();
|
||||
Map<String, Set<String>> processGroupNameMap = new HashMap<>();
|
||||
Map<String, Set<String>> componentNameMap = new HashMap<>();
|
||||
|
||||
for (OrdersViewPartsPageDO row : rows) {
|
||||
String key = buildComponentViewPartKey(row);
|
||||
|
||||
// 暂存 partsId:set<groupId>
|
||||
Map<Pair<Long, Integer>, Set<Long>> partsGroupMap = new HashMap<>();
|
||||
OrderViewPartPageRespVO vo = records.computeIfAbsent(key, k -> {
|
||||
OrderViewPartPageRespVO newVo = BeanUtil.copyProperties(row, OrderViewPartPageRespVO.class);
|
||||
newVo.setNum(BigDecimal.ZERO);
|
||||
newVo.setProcessGroupName("");
|
||||
newVo.setComponentName("");
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// 暂存 partsId:set<compId>
|
||||
Map<Pair<Long, Integer>, Set<Long>> partsCompMap = new HashMap<>();
|
||||
|
||||
// 暂存 partsId:num
|
||||
Map<Pair<Long, Integer>, Double> partsNumMap = new HashMap<>();
|
||||
|
||||
for (OrderItemDO item : orderItemRelation) {
|
||||
|
||||
Long partsId = item.getPartsId();
|
||||
Integer cadViewId = item.getCadViewId();
|
||||
Pair<Long, Integer> pair = new Pair<>(partsId, cadViewId);
|
||||
|
||||
// group_id
|
||||
if (item.getGroupId() != null) {
|
||||
partsGroupMap
|
||||
.computeIfAbsent(pair, k -> new HashSet<>())
|
||||
.add(item.getGroupId());
|
||||
if (row.getNum() != null && ObjectUtil.isNotNull(row.getCompId())) {
|
||||
vo.setNum(row.getNum());
|
||||
}
|
||||
|
||||
// comp_id
|
||||
if (item.getCompId() != null) {
|
||||
partsCompMap
|
||||
.computeIfAbsent(pair, k -> new HashSet<>())
|
||||
.add(item.getCompId());
|
||||
if (row.getCadViewFileId() != null && vo.getCadViewFileId() == null) {
|
||||
vo.setCadViewFileId(row.getCadViewFileId());
|
||||
}
|
||||
|
||||
// num 从部件组获取
|
||||
if (item.getNum() != null && ObjectUtil.isNotNull(item.getCompId())) {
|
||||
partsNumMap.put(
|
||||
pair,
|
||||
item.getNum()
|
||||
);
|
||||
if (row.getProcessGroupName() != null && !row.getProcessGroupName().isBlank()) {
|
||||
processGroupNameMap.computeIfAbsent(key, k -> new LinkedHashSet<>()).add(row.getProcessGroupName());
|
||||
}
|
||||
|
||||
if (row.getComponentName() != null && !row.getComponentName().isBlank()) {
|
||||
componentNameMap.computeIfAbsent(key, k -> new LinkedHashSet<>()).add(row.getComponentName());
|
||||
}
|
||||
}
|
||||
|
||||
// 查询加工组
|
||||
Set<Long> allGroupIds = partsGroupMap.values()
|
||||
.stream()
|
||||
.flatMap(Set::stream)
|
||||
.collect(Collectors.toSet());
|
||||
for (Map.Entry<String, OrderViewPartPageRespVO> entry : records.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
OrderViewPartPageRespVO vo = entry.getValue();
|
||||
|
||||
Map<Long, String> groupNameMap = Collections.emptyMap();
|
||||
|
||||
if (!allGroupIds.isEmpty()) {
|
||||
|
||||
groupNameMap = orderGroupMapper.selectByIds(allGroupIds)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(
|
||||
OrderGroupDO::getId,
|
||||
OrderGroupDO::getName,
|
||||
(a, b) -> a
|
||||
));
|
||||
vo.setProcessGroupName(String.join(",", processGroupNameMap.getOrDefault(key, Collections.emptySet())));
|
||||
vo.setComponentName(String.join(",", componentNameMap.getOrDefault(key, Collections.emptySet())));
|
||||
}
|
||||
|
||||
// 最终组装
|
||||
List<OrderViewPartPageRespVO> records = new ArrayList<>();
|
||||
for (OrdersViewPartsPageDO part : partsPageRecords) {
|
||||
return records.values();
|
||||
}
|
||||
|
||||
Pair<Long, Integer> pair = new Pair<>(part.getId(), part.getCadViewId());
|
||||
OrderViewPartPageRespVO partRespVO = BeanUtil.copyProperties(part, OrderViewPartPageRespVO.class);
|
||||
|
||||
// 设置数量
|
||||
partRespVO.setNum(
|
||||
BigDecimal.valueOf(partsNumMap.getOrDefault(pair, 0.0))
|
||||
);
|
||||
|
||||
// 拼接加工组名称
|
||||
Set<Long> groupIdsSet = partsGroupMap.getOrDefault(
|
||||
pair,
|
||||
Collections.emptySet()
|
||||
);
|
||||
|
||||
String processGroupName = groupIdsSet.stream()
|
||||
.map(groupNameMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
partRespVO.setProcessGroupName(processGroupName);
|
||||
|
||||
// 用逗号拼接部件组名称
|
||||
Set<Long> compIds = partsCompMap.getOrDefault(pair, Collections.emptySet());
|
||||
List<OrderComponentDO> comps = compIds.stream()
|
||||
.map(cadViewFileIdMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
|
||||
if (CollUtil.isNotEmpty(comps)) {
|
||||
partRespVO.setComponentName(String.join(",", comps.stream().map(OrderComponentDO::getName).collect(Collectors.toSet())));
|
||||
partRespVO.setCadViewFileId(comps.get(0).getCadViewFileId());
|
||||
}
|
||||
|
||||
records.add(partRespVO);
|
||||
}
|
||||
|
||||
return new PageResult<>(records, pageRes.getTotal());
|
||||
/**
|
||||
* 配件id+cadviewid key
|
||||
*
|
||||
* @param row
|
||||
* @return
|
||||
*/
|
||||
private String buildComponentViewPartKey(OrdersViewPartsPageDO row) {
|
||||
return row.getId() + "_" + row.getCadViewId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+89
-170
@@ -1021,193 +1021,112 @@ public class PlateServiceImpl implements PlateService {
|
||||
throw new ServiceException(ORDER_BODY_NOT_EXISTS);
|
||||
}
|
||||
|
||||
List<Long> orderIds = List.of(pageReqVO.getOrderId());
|
||||
boolean deleted = Boolean.TRUE.equals(pageReqVO.getDeleted());
|
||||
boolean fromGroup = CollUtil.isNotEmpty(groupIds);
|
||||
|
||||
// 整理出body_id和cad图纸id的关系
|
||||
Map<Long, Long> bodyIdAndCadViewFileIdMap = orderBodyDOList.stream()
|
||||
.filter(item -> item.getCadViewFileId() != null)
|
||||
.collect(Collectors.toMap(OrderBodyDO::getId, OrderBodyDO::getCadViewFileId));
|
||||
List<OrdersViewPartsPageDO> rows = orderItemMapper.selectOrdersViewPartsList(
|
||||
List.of(pageReqVO.getOrderId()),
|
||||
bodyIds,
|
||||
groupIds,
|
||||
null,
|
||||
pageReqVO.getName(),
|
||||
deleted
|
||||
);
|
||||
|
||||
Boolean deleted = pageReqVO.getDeleted();
|
||||
|
||||
// 查询配件编号+信息
|
||||
PageDTO<OrdersViewPartsPageDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
IPage<OrdersViewPartsPageDO> pageRes = orderItemMapper.selectOrdersViewPartsIdsPage(page, orderIds, bodyIds, groupIds, null, pageReqVO.getName(), deleted);
|
||||
|
||||
List<OrdersViewPartsPageDO> partsPageRecords = pageRes.getRecords();
|
||||
if(CollUtil.isEmpty(partsPageRecords)) {
|
||||
if (CollUtil.isEmpty(rows)) {
|
||||
return new PageResult<>(Collections.emptyList(), 0L);
|
||||
}
|
||||
|
||||
List<Long> partsIds = partsPageRecords.stream().map(OrdersViewPartsPageDO::getId).toList();
|
||||
Collection<OrderViewPartPageRespVO> records = buildBodyViewPartsGroup(rows, fromGroup);
|
||||
return new PageResult<>(new ArrayList<>(records), (long) records.size());
|
||||
}
|
||||
|
||||
if (CollUtil.isEmpty(partsIds)) {
|
||||
return new PageResult<>();
|
||||
}
|
||||
// 查询关联关系
|
||||
List<OrderItemDO> orderItemRelation;
|
||||
if (!deleted) {
|
||||
orderItemRelation = orderItemMapper.selectList(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
.eq(OrderItemDO::getOrderId, pageReqVO.getOrderId())
|
||||
.inIfPresent(OrderItemDO::getBodyId, bodyIds)
|
||||
.inIfPresent(OrderItemDO::getGroupId, groupIds)
|
||||
.in(OrderItemDO::getPartsId, partsIds)
|
||||
.select(OrderItemDO::getPartsId, OrderItemDO::getBodyId, OrderItemDO::getCadViewId, OrderItemDO::getGroupId, OrderItemDO::getCompId, OrderItemDO::getNum)
|
||||
);
|
||||
} else {
|
||||
List<OrderItemTempDO> orderItemTempDOS = orderItemTempMapper.selectList(new LambdaQueryWrapperX<OrderItemTempDO>()
|
||||
.eq(OrderItemTempDO::getOrderId, pageReqVO.getOrderId())
|
||||
.inIfPresent(OrderItemTempDO::getBodyId, bodyIds)
|
||||
.inIfPresent(OrderItemTempDO::getGroupId, groupIds)
|
||||
.in(OrderItemTempDO::getPartsId, partsIds)
|
||||
.select(OrderItemTempDO::getPartsId, OrderItemTempDO::getBodyId, OrderItemTempDO::getCadViewId, OrderItemTempDO::getGroupId, OrderItemTempDO::getCompId, OrderItemTempDO::getNum)
|
||||
);
|
||||
orderItemRelation = BeanUtil.copyToList(orderItemTempDOS, OrderItemDO.class);
|
||||
}
|
||||
/**
|
||||
* 组装配件的加工组和部件
|
||||
*
|
||||
* @param rows
|
||||
* @param fromGroup
|
||||
* @return
|
||||
*/
|
||||
private Collection<OrderViewPartPageRespVO> buildBodyViewPartsGroup(List<OrdersViewPartsPageDO> rows,
|
||||
boolean fromGroup) {
|
||||
Map<String, OrderViewPartPageRespVO> records = new LinkedHashMap<>();
|
||||
Map<String, Set<String>> processGroupNameMap = new HashMap<>();
|
||||
Map<String, Set<String>> componentNameMap = new HashMap<>();
|
||||
|
||||
// 暂存 partsId:set<groupId>
|
||||
Map<Pair<Long, Integer>, Set<Long>> partsGroupMap = new HashMap<>();
|
||||
|
||||
// 暂存 partsId:set<compId>
|
||||
Map<Pair<Long, Integer>, Set<Long>> partsCompMap = new HashMap<>();
|
||||
|
||||
// 暂存 partsId:num
|
||||
Map<Pair<Long, Integer>, Double> partsNumMap = new HashMap<>();
|
||||
|
||||
// 暂存 partsId:bodyId
|
||||
Map<Pair<Long, Integer>, Long> partsBodyIdMap = new HashMap<>();
|
||||
|
||||
// 是否加工组入口
|
||||
boolean comFromGroup = CollUtil.isNotEmpty(groupIds);
|
||||
|
||||
for (OrderItemDO item : orderItemRelation) {
|
||||
|
||||
Long partsId = item.getPartsId();
|
||||
Integer cadViewId = item.getCadViewId();
|
||||
Pair<Long, Integer> pair = new Pair<>(partsId, cadViewId);
|
||||
|
||||
// group_id
|
||||
if (item.getGroupId() != null) {
|
||||
partsGroupMap
|
||||
.computeIfAbsent(pair, k -> new HashSet<>())
|
||||
.add(item.getGroupId());
|
||||
for (OrdersViewPartsPageDO row : rows) {
|
||||
if (!isBodyViewPartNumRow(row, fromGroup)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// comp_id
|
||||
if (item.getCompId() != null) {
|
||||
partsCompMap
|
||||
.computeIfAbsent(pair, k -> new HashSet<>())
|
||||
.add(item.getCompId());
|
||||
String key = buildBodyViewPartKey(row);
|
||||
records.computeIfAbsent(key, k -> {
|
||||
OrderViewPartPageRespVO vo = BeanUtil.copyProperties(row, OrderViewPartPageRespVO.class);
|
||||
vo.setNum(BigDecimal.ZERO);
|
||||
vo.setProcessGroupName("");
|
||||
vo.setComponentName("");
|
||||
return vo;
|
||||
});
|
||||
}
|
||||
|
||||
if (records.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
for (OrdersViewPartsPageDO row : rows) {
|
||||
String key = buildBodyViewPartKey(row);
|
||||
OrderViewPartPageRespVO vo = records.get(key);
|
||||
if (vo == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// num
|
||||
if (item.getNum() != null &&
|
||||
(
|
||||
(comFromGroup && ObjectUtil.isNotNull(item.getGroupId()) && ObjectUtil.notEqual(item.getGroupId(), 0L)) //加工组入口 统计groupId不是空的
|
||||
||
|
||||
(!comFromGroup && (ObjectUtil.equals(item.getGroupId(), 0L) || (ObjectUtil.isNull(item.getGroupId()) && ObjectUtil.isNull(item.getCompId())))) // 非加工组入口,统计groupId = 0(加工组汇总的数量) 或者 null+不是部件item的(没有加工组的数量)
|
||||
)
|
||||
) {
|
||||
partsNumMap.merge(
|
||||
pair,
|
||||
item.getNum(),
|
||||
Double::sum
|
||||
);
|
||||
if (isBodyViewPartNumRow(row, fromGroup) && row.getNum() != null) {
|
||||
vo.setNum(vo.getNum().add(row.getNum()));
|
||||
}
|
||||
|
||||
partsBodyIdMap.putIfAbsent(pair, item.getBodyId());
|
||||
}
|
||||
|
||||
// 查询加工组
|
||||
Set<Long> allGroupIds = partsGroupMap.values()
|
||||
.stream()
|
||||
.flatMap(Set::stream)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Map<Long, String> groupNameMap = Collections.emptyMap();
|
||||
|
||||
if (!allGroupIds.isEmpty()) {
|
||||
|
||||
groupNameMap = orderGroupMapper.selectByIds(allGroupIds)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(
|
||||
OrderGroupDO::getId,
|
||||
OrderGroupDO::getName,
|
||||
(a, b) -> a
|
||||
));
|
||||
}
|
||||
|
||||
// 查询部件
|
||||
Set<Long> allCompIds = partsCompMap.values()
|
||||
.stream()
|
||||
.flatMap(Set::stream)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Map<Long, String> compNameMap = Collections.emptyMap();
|
||||
|
||||
if (!allCompIds.isEmpty()) {
|
||||
|
||||
compNameMap = orderComponentMapper.selectByIds(allCompIds)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(
|
||||
OrderComponentDO::getId,
|
||||
OrderComponentDO::getName,
|
||||
(a, b) -> a
|
||||
));
|
||||
}
|
||||
|
||||
// 最终组装
|
||||
List<OrderViewPartPageRespVO> records = new ArrayList<>();
|
||||
for (OrdersViewPartsPageDO part : partsPageRecords) {
|
||||
|
||||
Pair<Long, Integer> pair = new Pair<>(part.getId(), part.getCadViewId());
|
||||
OrderViewPartPageRespVO partRespVO = BeanUtil.copyProperties(part, OrderViewPartPageRespVO.class);
|
||||
|
||||
// 设置数量
|
||||
partRespVO.setNum(
|
||||
BigDecimal.valueOf(partsNumMap.getOrDefault(pair, 0.0))
|
||||
);
|
||||
|
||||
// 拼接加工组名称
|
||||
Set<Long> groupIdsSet = partsGroupMap.getOrDefault(
|
||||
pair,
|
||||
Collections.emptySet()
|
||||
);
|
||||
|
||||
String processGroupName = groupIdsSet.stream()
|
||||
.map(groupNameMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
partRespVO.setProcessGroupName(processGroupName);
|
||||
|
||||
// 拼接部件名称
|
||||
Set<Long> compIdsSet = partsCompMap.getOrDefault(
|
||||
pair,
|
||||
Collections.emptySet()
|
||||
);
|
||||
|
||||
String componentName = compIdsSet.stream()
|
||||
.map(compNameMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
partRespVO.setComponentName(componentName);
|
||||
|
||||
// 匹配图纸id
|
||||
Long bodyId = partsBodyIdMap.get(pair);
|
||||
partRespVO.setBodyId(bodyId);
|
||||
Long cadViewFileId = bodyIdAndCadViewFileIdMap.get(bodyId);
|
||||
if (ObjectUtil.isNotNull(cadViewFileId)) {
|
||||
partRespVO.setCadViewFileId(cadViewFileId);
|
||||
if (row.getProcessGroupName() != null && !row.getProcessGroupName().isBlank()) {
|
||||
processGroupNameMap.computeIfAbsent(key, k -> new LinkedHashSet<>()).add(row.getProcessGroupName());
|
||||
}
|
||||
|
||||
records.add(partRespVO);
|
||||
if (row.getComponentName() != null && !row.getComponentName().isBlank()) {
|
||||
componentNameMap.computeIfAbsent(key, k -> new LinkedHashSet<>()).add(row.getComponentName());
|
||||
}
|
||||
}
|
||||
|
||||
return new PageResult<>(records, pageRes.getTotal());
|
||||
for (Map.Entry<String, OrderViewPartPageRespVO> entry : records.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
OrderViewPartPageRespVO vo = entry.getValue();
|
||||
|
||||
vo.setProcessGroupName(String.join(",", processGroupNameMap.getOrDefault(key, Collections.emptySet())));
|
||||
vo.setComponentName(String.join(",", componentNameMap.getOrDefault(key, Collections.emptySet())));
|
||||
}
|
||||
|
||||
return records.values();
|
||||
}
|
||||
|
||||
/**
|
||||
* 配件累计规则
|
||||
*
|
||||
* @param row
|
||||
* @param fromGroup
|
||||
* @return
|
||||
*/
|
||||
private boolean isBodyViewPartNumRow(OrdersViewPartsPageDO row, boolean fromGroup) {
|
||||
if (fromGroup) {
|
||||
return ObjectUtil.isNotNull(row.getGroupId()) && ObjectUtil.notEqual(row.getGroupId(), 0L);
|
||||
}
|
||||
return ObjectUtil.equals(row.getGroupId(), 0L)
|
||||
|| (ObjectUtil.isNull(row.getGroupId()) && ObjectUtil.isNull(row.getCompId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 柜体id+配件id+cadviewid key
|
||||
*
|
||||
* @param row
|
||||
* @return
|
||||
*/
|
||||
private String buildBodyViewPartKey(OrdersViewPartsPageDO row) {
|
||||
return row.getBodyId() + "_" + row.getId() + "_" + row.getCadViewId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+110
@@ -741,6 +741,116 @@
|
||||
ORDER BY op.type, op.id
|
||||
</select>
|
||||
|
||||
<select id="selectOrdersViewPartsList"
|
||||
resultType="com.cf.imes.module.executor.dal.dataobject.orderItem.OrdersViewPartsPageDO">
|
||||
SELECT
|
||||
i.order_id AS orderId,
|
||||
i.parts_id AS id,
|
||||
i.body_id AS bodyId,
|
||||
ob.name AS bodyName,
|
||||
ob.room_name AS roomName,
|
||||
<choose>
|
||||
<when test="componentIds != null and componentIds.size() > 0">
|
||||
oc.cad_view_file_id AS cadViewFileId,
|
||||
</when>
|
||||
<otherwise>
|
||||
ob.cad_view_file_id AS cadViewFileId,
|
||||
</otherwise>
|
||||
</choose>
|
||||
i.cad_view_id AS cadViewId,
|
||||
|
||||
i.group_id AS groupId,
|
||||
i.comp_id AS compId,
|
||||
i.num AS num,
|
||||
|
||||
og.name AS processGroupName,
|
||||
oc.name AS componentName,
|
||||
|
||||
op.type,
|
||||
op.name,
|
||||
op.material,
|
||||
op.color,
|
||||
op.model,
|
||||
op.spec,
|
||||
op.unit,
|
||||
op.brand,
|
||||
op.factory,
|
||||
op.remark,
|
||||
op.width,
|
||||
op.length,
|
||||
op.thickness
|
||||
<choose>
|
||||
<when test="deleted">
|
||||
FROM order_item_temp i
|
||||
</when>
|
||||
<otherwise>
|
||||
FROM order_item i
|
||||
</otherwise>
|
||||
</choose>
|
||||
JOIN order_parts op
|
||||
ON op.organ_id = i.organ_id
|
||||
AND op.order_id = i.order_id
|
||||
AND op.id = i.parts_id
|
||||
AND op.deleted = false
|
||||
LEFT JOIN order_body ob
|
||||
ON ob.organ_id = i.organ_id
|
||||
AND ob.order_id = i.order_id
|
||||
AND ob.id = i.body_id
|
||||
LEFT JOIN order_group og
|
||||
ON og.organ_id = i.organ_id
|
||||
AND og.order_id = i.order_id
|
||||
AND og.id = i.group_id
|
||||
LEFT JOIN order_component oc
|
||||
ON oc.organ_id = i.organ_id
|
||||
AND oc.order_id = i.order_id
|
||||
AND oc.id = i.comp_id
|
||||
WHERE i.plate_id = 0
|
||||
AND i.source_id = 0
|
||||
AND i.parts_id != 0
|
||||
<if test="orderIds != null and orderIds.size() > 0">
|
||||
AND i.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="bodyIds != null and bodyIds.size() > 0">
|
||||
AND i.body_id IN
|
||||
<foreach item="bodyId" collection="bodyIds" open="(" separator="," close=")">
|
||||
#{bodyId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<choose>
|
||||
<when test="groupIds != null and groupIds.size() > 0">
|
||||
AND i.group_id IN
|
||||
<foreach item="groupId" collection="groupIds" open="(" separator="," close=")">
|
||||
#{groupId}
|
||||
</foreach>
|
||||
</when>
|
||||
<otherwise>
|
||||
<if test="componentIds == null or componentIds.size() == 0">
|
||||
AND ((i.group_id is null and i.comp_id is null) or i.group_id = 0)
|
||||
</if>
|
||||
</otherwise>
|
||||
</choose>
|
||||
|
||||
<if test="componentIds != null and componentIds.size() > 0">
|
||||
AND i.comp_id IN
|
||||
<foreach item="componentId" collection="componentIds" open="(" separator="," close=")">
|
||||
#{componentId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="name != null and name != ''">
|
||||
AND op.name = #{name}
|
||||
</if>
|
||||
|
||||
ORDER BY
|
||||
op.type,
|
||||
op.id
|
||||
</select>
|
||||
|
||||
<select id="selectComponentCorrelationPlateIds" resultType="java.lang.String">
|
||||
SELECT DISTINCT op.plate_no
|
||||
FROM order_item oi
|
||||
|
||||
Reference in New Issue
Block a user