mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1、分堆打包明细sql语句优化,mycat不支持的函数改为join后在内存分组;2、分堆打包订单分页接口支持主单带子单;3、移除原/order/page接口,webcad拆单订单分页支持子级;
This commit is contained in:
-11
@@ -41,17 +41,6 @@ public class PackController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getOrderPlate")
|
||||
@Operation(summary = "查看生产订单对应的没有打包的板材信息")
|
||||
@Parameter(name = "orderId", description = "订单Id", required = true)
|
||||
@PreAuthorize("@ss.hasAnyPermissions('manage:pack:export-lost-plate','manage:pack:pack')")
|
||||
public CommonResult<List<PlateDetailsRespVO>> getOrderPlateList(@Valid @RequestParam("orderId") Long orderId) {
|
||||
|
||||
return success(packService.getOrderPlateList(orderId));
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/unpack/details")
|
||||
@Operation(summary = "获取订单列表下未打包明细")
|
||||
@Parameter(name = "orderIds", description = "订单ID列表", required = true)
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ public class OrderPartsRespVO {
|
||||
@Schema(description = "组件名称")
|
||||
private String componentName;
|
||||
|
||||
private List<GroupNameList> processGroupNameList;
|
||||
private List<String> processGroupNameList;
|
||||
|
||||
@Schema(description = "加工组")
|
||||
private String processGroup;
|
||||
|
||||
+4
-9
@@ -17,9 +17,8 @@ public class PackRespVO {
|
||||
@Schema(description = "订单号", example = "7788")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "订单号", example = "7788")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "父订单号", example = "7788")
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "包裹ID", example = "7788")
|
||||
private Long packId;
|
||||
@@ -94,10 +93,6 @@ public class PackRespVO {
|
||||
@Schema(description = "待处理量")
|
||||
private Long pendingNum;
|
||||
|
||||
|
||||
@Schema(description = "订单对应的板材ID集")
|
||||
private List<Long> plateIdList;
|
||||
|
||||
@Schema(description = "订单对应的包裹ID集")
|
||||
private List<Long> packIdList;
|
||||
@Schema(description = "子订单")
|
||||
private List<PackRespVO> child;
|
||||
}
|
||||
|
||||
+1
-1
@@ -143,7 +143,7 @@ public class PlateDetailsRespVO {
|
||||
|
||||
|
||||
@Schema(description = "加工组名称集合")
|
||||
private List<GroupNameList> processGroupNameList;
|
||||
private List<String> processGroupNameList;
|
||||
|
||||
@Schema(description = "开料长")
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
+2
@@ -70,6 +70,8 @@ public class PackageDetailsRespVO {
|
||||
@Schema(description = "加工组")
|
||||
private String processGroup;
|
||||
|
||||
private List<String> processGroupNameList;
|
||||
|
||||
@Schema(description = "备注(板材和配件都要传递)")
|
||||
private String remark;
|
||||
|
||||
|
||||
+1
-8
@@ -140,13 +140,6 @@ public class OrderController {
|
||||
return success(BeanUtils.toBean(orderService.getOrder(id), OrderRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得订单分页")
|
||||
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||
public CommonResult<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) {
|
||||
return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/main/page")
|
||||
@Operation(summary = "获得主订单分页")
|
||||
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||
@@ -157,7 +150,7 @@ public class OrderController {
|
||||
@GetMapping("/webcad/page")
|
||||
@Operation(summary = "获得订单分页")
|
||||
public CommonResult<PageResult<OrderRespVO>> webCadGetOrderPage(@Valid OrderPageReqVO pageReqVO) {
|
||||
return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class));
|
||||
return success(BeanUtils.toBean(orderService.getMainOrderPage(pageReqVO), OrderRespVO.class));
|
||||
}
|
||||
|
||||
// 不做订单是否作废判断
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ public class OrderRespVO {
|
||||
|
||||
@Schema(description = "父单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("父单号")
|
||||
private Long parentNo;
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "源订单号")
|
||||
@ExcelProperty("父单号")
|
||||
|
||||
+133
-15
@@ -22,7 +22,10 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
@@ -194,24 +197,139 @@ public class HeapSplitServiceImpl implements HeapSplitService {
|
||||
// 查询配件
|
||||
List<OrderPartsRespVO> parts = orderPartsMapper.selectOrdersHeapSplitPartsList(orderIds);
|
||||
|
||||
// 根据成倍数量重新赋值柜体名称
|
||||
plates.forEach(item -> {
|
||||
if (item.getMultiNum() != null && item.getMultiNum() > 1
|
||||
&& item.getMultiSort() != null) {
|
||||
item.setCabinetName(item.getCabinetName() + "-" + item.getMultiSort());
|
||||
}
|
||||
});
|
||||
parts.forEach(item -> {
|
||||
if (item.getMultiNum() != null && item.getMultiNum() > 1
|
||||
&& item.getMultiSort() != null) {
|
||||
item.setCabinetName(item.getCabinetName() + "-" + item.getMultiSort());
|
||||
}
|
||||
});
|
||||
respVO.setPlates(plates);
|
||||
respVO.setParts(parts);
|
||||
respVO.setPlates(CollUtil.newArrayList(buildPlateGroup(plates)));
|
||||
respVO.setParts(CollUtil.newArrayList(buildPartsGroup(parts)));
|
||||
return respVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 板件分组:加工组
|
||||
*
|
||||
* @param plates
|
||||
* @return
|
||||
*/
|
||||
private Collection<PlateDetailsRespVO> buildPlateGroup( List<PlateDetailsRespVO> plates){
|
||||
Map<String, PlateDetailsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (PlateDetailsRespVO row : plates) {
|
||||
|
||||
// ===== 1. 组装 唯一key=====
|
||||
String key = row.getPlateId() + "_" + row.getRoomId() + "_" + row.getBodyId();
|
||||
|
||||
PlateDetailsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
PlateDetailsRespVO newVo = new PlateDetailsRespVO();
|
||||
|
||||
BeanUtils.copyProperties(row, newVo);
|
||||
|
||||
// ===== 初始化 =====
|
||||
newVo.setProcessGroupNameList(new ArrayList<>());
|
||||
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// ===== 2. 收集加工组(允许重复,不去重)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
}
|
||||
|
||||
Collection<PlateDetailsRespVO> values = map.values();
|
||||
// ===== 3. 转换成逗号字符串 =====
|
||||
for (PlateDetailsRespVO vo : values) {
|
||||
List<String> listGroup = vo.getProcessGroupNameList();
|
||||
|
||||
// 拼接加工组
|
||||
if (listGroup != null && !listGroup.isEmpty()) {
|
||||
vo.setProcessGroup(String.join(",", listGroup));
|
||||
} else {
|
||||
vo.setProcessGroup("");
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// 成倍编号处理
|
||||
if (vo.getMultiNum() > 1) {
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 配件分组:加工组、部件(目前是一对一)
|
||||
*
|
||||
* @param parts
|
||||
* @return
|
||||
*/
|
||||
private Collection<OrderPartsRespVO> buildPartsGroup(List<OrderPartsRespVO> parts) {
|
||||
|
||||
Map<String, OrderPartsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (OrderPartsRespVO row : parts) {
|
||||
|
||||
// ===== 1. 分组 key =====
|
||||
String key = row.getPartsId()
|
||||
+ "_" + row.getRoomId()
|
||||
+ "_" + row.getBodyId();
|
||||
|
||||
OrderPartsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
OrderPartsRespVO v = new OrderPartsRespVO();
|
||||
BeanUtils.copyProperties(row, v);
|
||||
|
||||
v.setNum(BigDecimal.ZERO);
|
||||
v.setHeapNum(BigDecimal.ZERO);
|
||||
v.setProcessGroupNameList(new ArrayList<>());
|
||||
return v;
|
||||
});
|
||||
|
||||
// ===== 3. num 累加 =====
|
||||
if (row.getNum() != null) {
|
||||
vo.setNum(vo.getNum().add(row.getNum()));
|
||||
}
|
||||
|
||||
// ===== 4. heapNum 累加 =====
|
||||
if (row.getHeapNum() != null) {
|
||||
vo.setHeapNum(vo.getHeapNum().add(row.getHeapNum()));
|
||||
}
|
||||
|
||||
// ===== 5. 加工组(允许重复)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
}
|
||||
|
||||
// ===== 7. 收尾处理 =====
|
||||
for (OrderPartsRespVO vo : map.values()) {
|
||||
|
||||
// 加工组拼接
|
||||
List<String> processGroupNameList = vo.getProcessGroupNameList();
|
||||
if (CollUtil.isNotEmpty(processGroupNameList)) {
|
||||
vo.setProcessGroup(String.join(",", processGroupNameList));
|
||||
} else {
|
||||
vo.setProcessGroup("");
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// ===== multiSort 处理(柜体编号)=====
|
||||
if (vo.getMultiNum() > 1) {
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
} else {
|
||||
vo.setCabinetName(vo.getCabinetName());
|
||||
}
|
||||
}
|
||||
|
||||
return map.values();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分堆打包数量
|
||||
*
|
||||
|
||||
-4
@@ -29,10 +29,6 @@ public interface PackService {
|
||||
|
||||
PageResult<OrderPackageVO> getPageOrderPack(PackageDetailsReqVO reqVO);
|
||||
|
||||
|
||||
// 查看生产订单对应的板材信息
|
||||
List<PlateDetailsRespVO> getOrderPlateList(Long orderId);
|
||||
|
||||
/**
|
||||
* 拆包
|
||||
*
|
||||
|
||||
+302
-60
@@ -38,14 +38,19 @@ import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
|
||||
import com.cf.imes.module.executor.service.orderitem.OrderItemService;
|
||||
import com.cf.imes.module.executor.service.plate.PlateService;
|
||||
import org.springframework.aop.framework.AopContext;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@@ -131,38 +136,6 @@ public class PackServiceImpl implements PackService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 查看生产订单对应的板材信息
|
||||
@Override
|
||||
public List<PlateDetailsRespVO> getOrderPlateList(Long orderId) {
|
||||
|
||||
// 查询订单对应的板件信息
|
||||
List<PlateDetailsRespVO> plateDetailsRespVOS = orderPlateMapper.selectOrderNoPackPlateList(orderId, getUserOrganId());
|
||||
|
||||
if(plateDetailsRespVOS.isEmpty()){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
for (PlateDetailsRespVO plateDetailsRespVO : plateDetailsRespVOS) {
|
||||
StringBuilder name = new StringBuilder();
|
||||
if (!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) {
|
||||
for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) {
|
||||
// 去除最后的逗号
|
||||
name.append(groupNameList.getName()).append(",");
|
||||
|
||||
}
|
||||
name = new StringBuilder(name.substring(0, name.length() - 1));
|
||||
}
|
||||
plateDetailsRespVO.setProcessGroup(name.toString());
|
||||
}
|
||||
|
||||
return plateDetailsRespVOS;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO) {
|
||||
List<Long> orderIds = reqVO.getOrderIds();
|
||||
@@ -924,7 +897,7 @@ public class PackServiceImpl implements PackService {
|
||||
pageReqVO.setAddress(insertSeparator(pageReqVO.getAddress()));
|
||||
|
||||
|
||||
// 查询查询分页
|
||||
// 查询主单分页
|
||||
IPage<PackRespVO> packRespVOS = ordersMapper.selectOrderIdList(page, pageReqVO, getUserOrganId());
|
||||
|
||||
if (CollUtil.isEmpty(packRespVOS.getRecords())) {
|
||||
@@ -933,6 +906,20 @@ public class PackServiceImpl implements PackService {
|
||||
|
||||
orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList());
|
||||
|
||||
// 查询分页下子级
|
||||
List<OrderDO> childList = ordersMapper.selectList(
|
||||
new LambdaQueryWrapperX<OrderDO>()
|
||||
.in(OrderDO::getParentId, orderIds)
|
||||
.eqIfPresent(OrderDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||
.ne(OrderDO::getStatus, OrderStatusEnum.EMPTY.getStatus())
|
||||
.orderByDesc(OrderDO::getId)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(childList)) {
|
||||
List<PackRespVO> childOrdersPackList = BeanUtil.copyToList(childList, PackRespVO.class);
|
||||
orderIds.addAll(childOrdersPackList.stream().map(PackRespVO::getId).toList());
|
||||
packRespVOS.getRecords().addAll(childOrdersPackList);
|
||||
}
|
||||
|
||||
return buildPageResult(orderIds, packRespVOS);
|
||||
|
||||
}
|
||||
@@ -949,6 +936,7 @@ public class PackServiceImpl implements PackService {
|
||||
if (orderIds.isEmpty()) {
|
||||
return new PageResult<>();
|
||||
}
|
||||
List<PackRespVO> records = packRespVOS.getRecords();
|
||||
|
||||
// 查询当前生产的包裹数量
|
||||
List<PackRespVO> orderPackNumGroup = orderPackageMapper.selectPackPage(orderIds, getUserOrganId());
|
||||
@@ -957,20 +945,41 @@ public class PackServiceImpl implements PackService {
|
||||
// 查询当前订单已经打包的板材数量
|
||||
List<PackRespVO> orderPackedPlateNumGroup = orderPackageMapper.selectPackPieceCount(orderIds, getUserOrganId());
|
||||
|
||||
for (PackRespVO vosRecord : packRespVOS.getRecords()) {
|
||||
for (PackRespVO vosRecord : records) {
|
||||
|
||||
// 板材总数
|
||||
vosRecord.setTotalPieceCount(vosRecord.getPlateNum().longValue());
|
||||
// 已打包裹数
|
||||
vosRecord.setPackCount(orderPackNumGroup.stream().filter(f -> Objects.equals(f.getOrderId(), vosRecord.getId())).mapToLong(PackRespVO::getPackCount).sum());
|
||||
vosRecord.setPackCount(orderPackNumGroup.stream().filter(f -> Objects.equals(f.getId(), vosRecord.getId())).mapToLong(PackRespVO::getPackCount).sum());
|
||||
// 已打包片数
|
||||
vosRecord.setPackPieceCount(orderPackedPlateNumGroup.stream().filter(f -> Objects.equals(f.getOrderId(), vosRecord.getId())).mapToLong(PackRespVO::getPackPieceCount).sum());
|
||||
vosRecord.setPackPieceCount(orderPackedPlateNumGroup.stream().filter(f -> Objects.equals(f.getId(), vosRecord.getId())).mapToLong(PackRespVO::getPackPieceCount).sum());
|
||||
// 待处理量
|
||||
vosRecord.setPendingNum(vosRecord.getTotalPieceCount() - vosRecord.getPackPieceCount());
|
||||
|
||||
}
|
||||
|
||||
return new PageResult<>(packRespVOS.getRecords(), packRespVOS.getTotal());
|
||||
Map<Long, PackRespVO> parentMap = new HashMap<>();
|
||||
List<PackRespVO> result = new ArrayList<>();
|
||||
|
||||
// 1. 把所有 parent 放进 map
|
||||
for (PackRespVO vo : records) {
|
||||
if (vo.getParentId() == 0) {
|
||||
vo.setChild(new ArrayList<>());
|
||||
parentMap.put(vo.getId(), vo);
|
||||
result.add(vo);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 再挂子节点
|
||||
for (PackRespVO vo : records) {
|
||||
if (vo.getParentId() != 0) {
|
||||
PackRespVO parent = parentMap.get(vo.getParentId());
|
||||
if (parent != null) {
|
||||
parent.getChild().add(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
return new PageResult<>(result, Long.valueOf(result.size()));
|
||||
|
||||
}
|
||||
|
||||
@@ -1044,24 +1053,138 @@ public class PackServiceImpl implements PackService {
|
||||
// 查询配件
|
||||
List<OrderPartsRespVO> parts = orderPartsMapper.selectOrdersPartsList(orderIds);
|
||||
|
||||
// 根据成倍数量重新赋值柜体名称
|
||||
plates.forEach(item -> {
|
||||
if (item.getMultiNum() != null && item.getMultiNum() > 1
|
||||
&& item.getMultiSort() != null) {
|
||||
item.setCabinetName(item.getCabinetName() + "-" + item.getMultiSort());
|
||||
}
|
||||
});
|
||||
parts.forEach(item -> {
|
||||
if (item.getMultiNum() != null && item.getMultiNum() > 1
|
||||
&& item.getMultiSort() != null) {
|
||||
item.setCabinetName(item.getCabinetName() + "-" + item.getMultiSort());
|
||||
}
|
||||
});
|
||||
ordersUnpackDetailRespVO.setPlates(plates);
|
||||
ordersUnpackDetailRespVO.setParts(parts);
|
||||
ordersUnpackDetailRespVO.setPlates(CollUtil.newArrayList(buildPlateGroup(plates)));
|
||||
ordersUnpackDetailRespVO.setParts(CollUtil.newArrayList(buildPartsGroup(parts)));
|
||||
return ordersUnpackDetailRespVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 板件分组:加工组
|
||||
*
|
||||
* @param plates
|
||||
* @return
|
||||
*/
|
||||
private Collection<PlateDetailsRespVO> buildPlateGroup(List<PlateDetailsRespVO> plates) {
|
||||
Map<String, PlateDetailsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (PlateDetailsRespVO row : plates) {
|
||||
|
||||
// ===== 1. 组装 唯一key=====
|
||||
String key = row.getPlateId() + "_" + row.getRoomId() + "_" + row.getBodyId();
|
||||
|
||||
PlateDetailsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
PlateDetailsRespVO newVo = new PlateDetailsRespVO();
|
||||
|
||||
BeanUtils.copyProperties(row, newVo);
|
||||
|
||||
// ===== 初始化 =====
|
||||
newVo.setProcessGroupNameList(new ArrayList<>());
|
||||
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// ===== 2. 收集加工组(允许重复,不去重)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
}
|
||||
|
||||
Collection<PlateDetailsRespVO> values = map.values();
|
||||
// ===== 3. 转换成逗号字符串 =====
|
||||
for (PlateDetailsRespVO vo : values) {
|
||||
List<String> listGroup = vo.getProcessGroupNameList();
|
||||
|
||||
// 拼接加工组
|
||||
if (listGroup != null && !listGroup.isEmpty()) {
|
||||
vo.setProcessGroup(String.join(",", listGroup));
|
||||
} else {
|
||||
vo.setProcessGroup("");
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// 成倍编号处理
|
||||
if (vo.getMultiNum() != null
|
||||
&& vo.getMultiNum() > 1
|
||||
&& vo.getMultiSort() != null
|
||||
&& vo.getCabinetName() != null) {
|
||||
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* 配件分组:加工组、部件(目前是一对一)
|
||||
*
|
||||
* @param parts
|
||||
* @return
|
||||
*/
|
||||
private Collection<OrderPartsRespVO> buildPartsGroup(List<OrderPartsRespVO> parts) {
|
||||
Map<String, OrderPartsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (OrderPartsRespVO row : parts) {
|
||||
|
||||
// ===== 1. 组装 唯一key=====
|
||||
String key = row.getPartsId()
|
||||
+ "_" + row.getRoomId()
|
||||
+ "_" + row.getBodyId();
|
||||
|
||||
OrderPartsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
OrderPartsRespVO newVo = new OrderPartsRespVO();
|
||||
|
||||
BeanUtils.copyProperties(row, newVo);
|
||||
|
||||
// ===== 初始化 =====
|
||||
newVo.setProcessGroupNameList(new ArrayList<>());
|
||||
newVo.setNum(BigDecimal.ZERO);
|
||||
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// ===== 2. num 累加 =====
|
||||
if (row.getNum() != null) {
|
||||
vo.setNum(vo.getNum().add(row.getNum()));
|
||||
}
|
||||
|
||||
// ===== 3. 加工组(允许重复)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
}
|
||||
|
||||
Collection<OrderPartsRespVO> values = map.values();
|
||||
for (OrderPartsRespVO vo : values) {
|
||||
|
||||
// ===== 加工组拼接 =====
|
||||
List<String> processGroupNameList = vo.getProcessGroupNameList();
|
||||
if (CollUtil.isNotEmpty(processGroupNameList)) {
|
||||
vo.setProcessGroup(String.join(",", processGroupNameList));
|
||||
} else {
|
||||
vo.setProcessGroup(null);
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// ===== multiSort 处理(柜体编号)=====
|
||||
if (vo.getMultiNum() > 1) {
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
} else {
|
||||
vo.setCabinetName(vo.getCabinetName());
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PackageDetailsRespVO> getOrdersPackageDetails(String packageNo) {
|
||||
List<OrderPackagDO> orderPackagDONews = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
|
||||
@@ -1075,16 +1198,135 @@ public class PackServiceImpl implements PackService {
|
||||
List<PackageDetailsRespVO> packPlateList = orderPlateMapper.selectPackedPlateList(orderIds, packageNo);
|
||||
// 查询配件
|
||||
List<PackageDetailsRespVO> packPartsList = orderPartsMapper.selectPackedParts(orderIds, packageNo);
|
||||
packPlateList.addAll(packPartsList);
|
||||
|
||||
// 根据成倍数量重新赋值柜体名称
|
||||
packPlateList.forEach(item -> {
|
||||
if (item.getMultiNum() != null && item.getMultiNum() > 1
|
||||
&& item.getMultiSort() != null) {
|
||||
item.setCabinetName(item.getCabinetName() + "-" + item.getMultiSort());
|
||||
Collection<PackageDetailsRespVO> resultList = buildPackaPlateGroup(packPlateList);
|
||||
resultList.addAll(buildPackaPlateGroup(packPartsList));
|
||||
return CollUtil.newArrayList(resultList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 包裹板件分组:加工组
|
||||
*
|
||||
* @param plates
|
||||
* @return
|
||||
*/
|
||||
private Collection<PackageDetailsRespVO> buildPackaPlateGroup(List<PackageDetailsRespVO> plates) {
|
||||
Map<String, PackageDetailsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (PackageDetailsRespVO row : plates) {
|
||||
|
||||
// ===== 1. 组装 唯一key=====
|
||||
String key = row.getPlateId()
|
||||
+ "_" + row.getRoomId()
|
||||
+ "_" + row.getBodyId();
|
||||
|
||||
PackageDetailsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
PackageDetailsRespVO newVo = new PackageDetailsRespVO();
|
||||
|
||||
BeanUtils.copyProperties(row, newVo);
|
||||
|
||||
// ===== 初始化 =====
|
||||
newVo.setProcessGroupNameList(new ArrayList<>());
|
||||
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// ===== 2. 收集加工组(允许重复,不去重)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
});
|
||||
return packPlateList;
|
||||
}
|
||||
|
||||
Collection<PackageDetailsRespVO> values = map.values();
|
||||
// ===== 3. 转换成逗号字符串 =====
|
||||
for (PackageDetailsRespVO vo : values) {
|
||||
List<String> listGroup = vo.getProcessGroupNameList();
|
||||
|
||||
// 拼接加工组
|
||||
if (listGroup != null && !listGroup.isEmpty()) {
|
||||
vo.setProcessGroup(String.join(",", listGroup));
|
||||
} else {
|
||||
vo.setProcessGroup("");
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// 成倍编号处理
|
||||
if (vo.getMultiNum() > 1) {
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* 包裹配件分组:加工组、部件(目前是一对一)
|
||||
*
|
||||
* @param parts
|
||||
* @return
|
||||
*/
|
||||
private Collection<PackageDetailsRespVO> buildPackPartsGroup(List<PackageDetailsRespVO> parts) {
|
||||
Map<String, PackageDetailsRespVO> map = new LinkedHashMap<>();
|
||||
|
||||
for (PackageDetailsRespVO row : parts) {
|
||||
|
||||
// ===== 1. 组装 唯一key=====
|
||||
String key = row.getPartsId()
|
||||
+ "_" + row.getRoomId()
|
||||
+ "_" + row.getBodyId();
|
||||
|
||||
PackageDetailsRespVO vo = map.computeIfAbsent(key, k -> {
|
||||
PackageDetailsRespVO newVo = new PackageDetailsRespVO();
|
||||
|
||||
BeanUtils.copyProperties(row, newVo);
|
||||
|
||||
// ===== 初始化 =====
|
||||
newVo.setProcessGroupNameList(new ArrayList<>());
|
||||
newVo.setPackNum(BigDecimal.ZERO);
|
||||
|
||||
return newVo;
|
||||
});
|
||||
|
||||
// ===== 2. num 累加 =====
|
||||
if (row.getPackNum() != null) {
|
||||
vo.setPackNum(vo.getPackNum().add(row.getPackNum()));
|
||||
}
|
||||
|
||||
// ===== 3. 加工组(允许重复)=====
|
||||
if (row.getProcessGroup() != null) {
|
||||
vo.getProcessGroupNameList().add(row.getProcessGroup());
|
||||
}
|
||||
}
|
||||
|
||||
Collection<PackageDetailsRespVO> values = map.values();
|
||||
for (PackageDetailsRespVO vo : values) {
|
||||
|
||||
// ===== 加工组拼接 =====
|
||||
List<String> processGroupNameList = vo.getProcessGroupNameList();
|
||||
if (CollUtil.isNotEmpty(processGroupNameList)) {
|
||||
vo.setProcessGroup(String.join(",", processGroupNameList));
|
||||
} else {
|
||||
vo.setProcessGroup(null);
|
||||
}
|
||||
|
||||
// 可释放内存
|
||||
vo.setProcessGroupNameList(null);
|
||||
|
||||
// ===== multiSort 处理(柜体编号)=====
|
||||
if (vo.getMultiNum() > 1) {
|
||||
vo.setCabinetName(
|
||||
vo.getCabinetName() + "-" + vo.getMultiSort()
|
||||
);
|
||||
} else {
|
||||
vo.setCabinetName(vo.getCabinetName());
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-2
@@ -485,7 +485,8 @@
|
||||
|
||||
<resultMap id="PackMap" type="com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO">
|
||||
|
||||
<result property="id" column="orderNo"/>
|
||||
<result property="id" column="id"/>
|
||||
<result property="parentId" column="parentId"/>
|
||||
<result property="customOrderNo" column="customOrderNo"/>
|
||||
<result property="dealer" column="dealer"/>
|
||||
<result property="dealerPhoneNumber" column="dealerPhoneNumber"/>
|
||||
@@ -542,7 +543,8 @@
|
||||
|
||||
|
||||
select
|
||||
id as orderNo,
|
||||
id,
|
||||
parent_id as parentId,
|
||||
custom_order_no as customOrderNo,
|
||||
dealer as dealer,
|
||||
dealer_phone_number as dealerPhoneNumber,
|
||||
@@ -564,6 +566,7 @@
|
||||
organ_id =#{organId}
|
||||
and deleted = false
|
||||
and status in (1,2,3,4)
|
||||
and parent_id = 0
|
||||
|
||||
<if test="pageReqVO.orderId !=null">
|
||||
and id like concat('%', #{pageReqVO.orderId},'%')
|
||||
|
||||
+105
-110
@@ -298,18 +298,23 @@
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="partsMap">
|
||||
SELECT
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.group_names AS groupName,
|
||||
t.component_names AS componentName,
|
||||
t.pack_num AS packNum,
|
||||
t.package_id AS packageId,
|
||||
t.multiNum AS multiNum,
|
||||
t.multiSort AS multiSort,
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
|
||||
og.name AS groupName,
|
||||
oc.name AS componentName,
|
||||
|
||||
oi.pack_num AS packNum,
|
||||
oi.package_id AS packageId,
|
||||
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
|
||||
op.name,
|
||||
op.model,
|
||||
op.spec,
|
||||
@@ -317,50 +322,48 @@
|
||||
op.brand,
|
||||
op.factory,
|
||||
op.remark,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.category,
|
||||
op.subparts,
|
||||
op.type
|
||||
FROM order_parts op
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.parts_id,
|
||||
oi.package_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
SUM(oi.pack_num) AS pack_num,
|
||||
MIN(ob.multi_num) AS multiNum,
|
||||
MIN(ob.multi_sort) AS multiSort
|
||||
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_parts op
|
||||
ON oi.parts_id = op.id
|
||||
AND oi.organ_id = op.organ_id
|
||||
AND oi.order_id = op.order_id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
WHERE oi.package_id = #{packageNo}
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
oi.package_id = #{packageNo}
|
||||
AND oi.parts_id != 0
|
||||
GROUP BY oi.room_id, oi.body_id, oi.parts_id, oi.package_id
|
||||
) t ON t.parts_id = op.id
|
||||
WHERE op.deleted = false
|
||||
|
||||
AND op.deleted = false
|
||||
AND op.type != '封边条'
|
||||
|
||||
AND op.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
order by partsId
|
||||
</select>
|
||||
|
||||
|
||||
@@ -402,17 +405,17 @@
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="PartsListMap">
|
||||
SELECT
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.group_names AS processGroup,
|
||||
t.component_names AS componentName,
|
||||
t.num AS num,
|
||||
t.multiNum AS multiNum,
|
||||
t.multiSort AS multiSort,
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
og.name AS processGroup,
|
||||
oc.name AS componentName,
|
||||
(oi.num - oi.pack_num) AS num,
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
op.name,
|
||||
op.model,
|
||||
op.spec,
|
||||
@@ -420,71 +423,69 @@
|
||||
op.brand,
|
||||
op.factory,
|
||||
op.remark,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.category,
|
||||
op.subparts,
|
||||
op.type
|
||||
FROM order_parts op
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.parts_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
SUM(oi.num - oi.pack_num) AS num,
|
||||
MIN(ob.multi_num) AS multiNum,
|
||||
MIN(ob.multi_sort) AS multiSort
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_parts op
|
||||
ON oi.parts_id = op.id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
oi.parts_id != 0
|
||||
AND oi.package_id = 0
|
||||
AND oi.source_id = 0
|
||||
GROUP BY oi.room_id, oi.body_id, oi.parts_id
|
||||
) t ON t.parts_id = op.id
|
||||
WHERE op.deleted = false
|
||||
AND op.deleted = false
|
||||
AND op.type != '封边条'
|
||||
AND op.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
|
||||
order by partsId
|
||||
</select>
|
||||
|
||||
<select id="selectOrdersHeapSplitPartsList"
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="PartsListMap">
|
||||
SELECT
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.heap_split_status AS heapSplitStatus,
|
||||
t.group_names AS processGroup,
|
||||
t.component_names AS componentName,
|
||||
t.multi_num AS multiNum,
|
||||
t.multi_sort AS multiSort,
|
||||
t.num AS num,
|
||||
t.heap_num AS heapNum,
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
|
||||
oi.heap_split_status AS heapSplitStatus,
|
||||
|
||||
og.name AS processGroup,
|
||||
oc.name AS componentName,
|
||||
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
|
||||
(oi.num - oi.heap_num) AS num,
|
||||
oi.heap_num AS heapNum,
|
||||
|
||||
op.id AS partsId,
|
||||
op.order_id AS orderId,
|
||||
|
||||
op.name,
|
||||
op.model,
|
||||
op.spec,
|
||||
@@ -492,58 +493,52 @@
|
||||
op.brand,
|
||||
op.factory,
|
||||
op.remark,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.color AS partsColor,
|
||||
op.width AS partsWidth,
|
||||
op.length AS partsLength,
|
||||
op.thickness AS partsThickness,
|
||||
op.category,
|
||||
op.subparts,
|
||||
op.type
|
||||
FROM order_parts op
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.parts_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
oi.heap_split_status,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
SUM(oi.num - oi.heap_num) AS num,
|
||||
SUM(oi.heap_num) AS heap_num,
|
||||
MIN(ob.multi_num) AS multi_num,
|
||||
MIN(ob.multi_sort) AS multi_sort
|
||||
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_parts op
|
||||
ON oi.parts_id = op.id
|
||||
AND oi.organ_id = op.organ_id
|
||||
AND oi.order_id = op.order_id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
oi.parts_id != 0
|
||||
AND
|
||||
(
|
||||
source_id = 0
|
||||
OR
|
||||
(source_id != 0 AND oi.heap_split_status = 1)
|
||||
|
||||
AND (
|
||||
oi.source_id = 0
|
||||
OR (oi.source_id != 0 AND oi.heap_split_status = 1)
|
||||
)
|
||||
GROUP BY oi.room_id, oi.body_id, oi.parts_id, oi.heap_split_status
|
||||
) t ON t.parts_id = op.id
|
||||
WHERE op.deleted = false
|
||||
|
||||
AND op.deleted = false
|
||||
AND op.type != '封边条'
|
||||
|
||||
AND op.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
|
||||
order by partsId
|
||||
</select>
|
||||
|
||||
<resultMap id="LabelPartsMap" type="com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPartsData">
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
parameterType="java.util.List"
|
||||
resultType="com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO">
|
||||
select
|
||||
order_id as orderId,
|
||||
order_id as id,
|
||||
COUNT(*) AS packCount
|
||||
from order_package
|
||||
where
|
||||
@@ -26,7 +26,7 @@
|
||||
resultType="com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO">
|
||||
|
||||
select
|
||||
op.order_id as orderId,
|
||||
op.order_id as id,
|
||||
COUNT(DISTINCT oi.plate_id) AS packPieceCount
|
||||
from order_package op
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.package_no = oi.package_id
|
||||
|
||||
+168
-152
@@ -814,28 +814,32 @@
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="PlateDetailsMap">
|
||||
SELECT
|
||||
t.group_names AS processGroup,
|
||||
t.component_names AS componentName,
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.multi_num AS multiNum,
|
||||
t.multi_sort AS multiSort,
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
op.order_id AS orderId,
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
og.name AS processGroup,
|
||||
oc.name AS componentName,
|
||||
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
op.order_id AS orderId,
|
||||
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
op.texture,
|
||||
op.remark,
|
||||
|
||||
op.is_special_shaped AS specialShaped,
|
||||
op.is_sculpt AS profiling,
|
||||
op.is_row_hole AS rowHole,
|
||||
@@ -852,212 +856,224 @@
|
||||
op.seal_right AS sealRight,
|
||||
op.seal_up AS sealUp,
|
||||
op.seal_down AS sealDown
|
||||
|
||||
FROM order_plate op
|
||||
|
||||
LEFT JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.plate_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,-- 聚合加工组
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
MIN(ob.multi_num) AS multi_num,
|
||||
MIN(ob.multi_sort) AS multi_sort
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_item oi
|
||||
ON oi.organ_id = op.organ_id
|
||||
AND oi.order_id = op.order_id
|
||||
AND oi.plate_id = op.id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
WHERE oi.plate_id != 0
|
||||
AND oi.package_id = 0
|
||||
GROUP BY oi.plate_id, room_id, body_id
|
||||
) t ON t.plate_id = op.id
|
||||
WHERE op.deleted = false
|
||||
AND op.order_id IN
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
op.deleted = false
|
||||
AND op.order_id in
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
|
||||
AND oi.plate_id != 0
|
||||
AND oi.package_id = 0
|
||||
AND oi.organ_id = 1
|
||||
order by plateId
|
||||
</select>
|
||||
|
||||
<select id="selectPackedPlateList"
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="orderItemMap">
|
||||
|
||||
SELECT
|
||||
t.package_id AS packageId,
|
||||
t.group_names AS processGroup,
|
||||
t.component_names AS componentName,
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.multi_num AS multiNum,
|
||||
t.multi_sort AS multiSort,
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
op.order_id AS orderId,
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
oi.package_id AS packageId,
|
||||
|
||||
og.name AS processGroup,
|
||||
oc.name AS componentName,
|
||||
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
|
||||
op.order_id AS orderId,
|
||||
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
op.texture,
|
||||
op.remark,
|
||||
op.is_special_shaped AS specialShaped,
|
||||
op.is_sculpt AS profiling,
|
||||
op.is_row_hole AS rowHole,
|
||||
op.front_hole_count AS frontHoleCount,
|
||||
op.back_hole_count AS backHoleCount,
|
||||
op.side_hole_count AS sideHoleCount,
|
||||
op.open_door_type AS openDoorType,
|
||||
op.is_side_sculpt AS isSideSculpt,
|
||||
op.is_2v AS is2v,
|
||||
op.is_side_2v AS isSide2v,
|
||||
op.split_width AS splitWidth,
|
||||
op.split_height AS splitHeight,
|
||||
op.seal_left AS sealLeft,
|
||||
op.seal_right AS sealRight,
|
||||
op.seal_up AS sealUp,
|
||||
op.seal_down AS sealDown
|
||||
FROM order_plate op
|
||||
|
||||
op.is_special_shaped AS specialShaped,
|
||||
op.is_sculpt AS profiling,
|
||||
op.is_row_hole AS rowHole,
|
||||
op.front_hole_count AS frontHoleCount,
|
||||
op.back_hole_count AS backHoleCount,
|
||||
op.side_hole_count AS sideHoleCount,
|
||||
op.open_door_type AS openDoorType,
|
||||
op.is_side_sculpt AS isSideSculpt,
|
||||
op.is_2v AS is2v,
|
||||
op.is_side_2v AS isSide2v,
|
||||
op.split_width AS splitWidth,
|
||||
op.split_height AS splitHeight,
|
||||
op.seal_left AS sealLeft,
|
||||
op.seal_right AS sealRight,
|
||||
op.seal_up AS sealUp,
|
||||
op.seal_down AS sealDown
|
||||
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_plate op
|
||||
ON oi.organ_id = op.organ_id
|
||||
AND oi.order_id = op.order_id
|
||||
AND oi.plate_id = op.id
|
||||
|
||||
LEFT JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.plate_id,
|
||||
oi.package_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,-- 聚合加工组
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
MIN(ob.multi_num) AS multi_num,
|
||||
MIN(ob.multi_sort) AS multi_sort
|
||||
FROM order_item oi
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
WHERE oi.package_id = #{packageNo}
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
oi.package_id = #{packageNo}
|
||||
AND oi.plate_id != 0
|
||||
GROUP BY oi.room_id, oi.body_id, oi.plate_id, oi.package_id
|
||||
) t ON t.plate_id = op.id
|
||||
WHERE op.deleted = false
|
||||
AND op.deleted = false
|
||||
AND op.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
order by plateId
|
||||
</select>
|
||||
|
||||
<select id="selectOrdersHeapSplitPlateList"
|
||||
parameterType="java.lang.Long"
|
||||
resultMap="PlateDetailsMap">
|
||||
SELECT
|
||||
t.group_names AS processGroup,
|
||||
t.component_names AS componentName,
|
||||
t.room_name AS roomName,
|
||||
t.body_name AS bodyName,
|
||||
t.room_id AS roomId,
|
||||
t.body_id AS bodyId,
|
||||
t.heap_split_status AS heapSplitStatus,
|
||||
t.multi_num AS multiNum,
|
||||
t.multi_sort AS multiSort,
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
op.order_id AS orderId,
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
og.name AS processGroup,
|
||||
oc.name AS componentName,
|
||||
|
||||
ob.room_name AS roomName,
|
||||
ob.name AS bodyName,
|
||||
ob.room_id AS roomId,
|
||||
ob.id AS bodyId,
|
||||
|
||||
oi.heap_split_status AS heapSplitStatus,
|
||||
|
||||
ob.multi_num AS multiNum,
|
||||
ob.multi_sort AS multiSort,
|
||||
|
||||
op.id AS plateId,
|
||||
op.plate_no AS plateNo,
|
||||
op.custom_plate_no AS customPlateNo,
|
||||
op.name AS plateName,
|
||||
|
||||
ogs.material AS plateMaterial,
|
||||
ogs.color AS plateColor,
|
||||
ogs.brand AS brand,
|
||||
|
||||
op.order_id AS orderId,
|
||||
|
||||
op.height AS plateHeight,
|
||||
op.width AS plateWidth,
|
||||
op.thickness AS plateThickness,
|
||||
op.area AS plateArea,
|
||||
op.texture,
|
||||
op.remark,
|
||||
op.is_special_shaped AS specialShaped,
|
||||
op.is_sculpt AS profiling,
|
||||
op.is_row_hole AS rowHole,
|
||||
op.front_hole_count AS frontHoleCount,
|
||||
op.back_hole_count AS backHoleCount,
|
||||
op.side_hole_count AS sideHoleCount,
|
||||
op.open_door_type AS openDoorType,
|
||||
op.is_side_sculpt AS isSideSculpt,
|
||||
op.is_2v AS is2v,
|
||||
op.is_side_2v AS isSide2v,
|
||||
op.split_width AS splitWidth,
|
||||
op.split_height AS splitHeight,
|
||||
op.seal_left AS sealLeft,
|
||||
op.seal_right AS sealRight,
|
||||
op.seal_up AS sealUp,
|
||||
op.seal_down AS sealDown
|
||||
FROM order_plate op
|
||||
|
||||
op.is_special_shaped AS specialShaped,
|
||||
op.is_sculpt AS profiling,
|
||||
op.is_row_hole AS rowHole,
|
||||
op.front_hole_count AS frontHoleCount,
|
||||
op.back_hole_count AS backHoleCount,
|
||||
op.side_hole_count AS sideHoleCount,
|
||||
op.open_door_type AS openDoorType,
|
||||
op.is_side_sculpt AS isSideSculpt,
|
||||
op.is_2v AS is2v,
|
||||
op.is_side_2v AS isSide2v,
|
||||
op.split_width AS splitWidth,
|
||||
op.split_height AS splitHeight,
|
||||
op.seal_left AS sealLeft,
|
||||
op.seal_right AS sealRight,
|
||||
op.seal_up AS sealUp,
|
||||
op.seal_down AS sealDown
|
||||
|
||||
FROM order_item oi
|
||||
|
||||
JOIN order_plate op
|
||||
ON oi.organ_id = op.organ_id
|
||||
AND oi.order_id = op.order_id
|
||||
AND oi.plate_id = op.id
|
||||
|
||||
LEFT JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
JOIN (
|
||||
SELECT
|
||||
oi.plate_id,
|
||||
oi.room_id,
|
||||
oi.body_id,
|
||||
oi.heap_split_status,
|
||||
GROUP_CONCAT(og.name SEPARATOR ',') AS group_names,
|
||||
MIN(oc.name) AS component_names,
|
||||
MIN(ob.room_name) AS room_name,
|
||||
MIN(ob.name) AS body_name,
|
||||
MIN(ob.multi_num) AS multi_num,
|
||||
MIN(ob.multi_sort) AS multi_sort
|
||||
FROM order_item oi
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON oi.organ_id = og.organ_id
|
||||
AND oi.order_id = og.order_id
|
||||
AND oi.group_id = og.id
|
||||
|
||||
LEFT JOIN order_body ob
|
||||
ON oi.organ_id = ob.organ_id
|
||||
AND oi.order_id = ob.order_id
|
||||
AND oi.body_id = ob.id
|
||||
|
||||
LEFT JOIN order_component oc
|
||||
ON oi.organ_id = oc.organ_id
|
||||
AND oi.order_id = oc.order_id
|
||||
AND oc.id = oi.comp_id
|
||||
WHERE oi.plate_id != 0
|
||||
GROUP BY room_id, body_id, oi.plate_id, oi.heap_split_status
|
||||
) t ON t.plate_id = op.id
|
||||
WHERE op.deleted = false
|
||||
AND oi.comp_id = oc.id
|
||||
|
||||
WHERE
|
||||
oi.plate_id != 0
|
||||
AND op.deleted = false
|
||||
AND op.order_id IN
|
||||
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
order by plateId
|
||||
</select>
|
||||
|
||||
<select id="selectLabelOrderPlateDataByOrderId"
|
||||
|
||||
Reference in New Issue
Block a user