mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 13:42:07 +08:00
1、装配设置重复添加配置序列不断累加修复;2、新增装配清单专用多订单cad视图板件分页和所有接口;
This commit is contained in:
+19
-2
@@ -1,13 +1,16 @@
|
|||||||
package com.cf.imes.module.executor.controller.admin.assemblylist;
|
package com.cf.imes.module.executor.controller.admin.assemblylist;
|
||||||
|
|
||||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||||
|
import com.cf.imes.framework.common.pojo.PageResult;
|
||||||
|
import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderDetailComponentListReqVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPlatePageRespVO;
|
||||||
import com.cf.imes.module.executor.service.assemblylist.AssemblyListService;
|
import com.cf.imes.module.executor.service.assemblylist.AssemblyListService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -17,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.cf.imes.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@@ -33,10 +38,22 @@ public class AssemblyListController {
|
|||||||
|
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
@Operation(summary = "装配清单-获取部件列表")
|
@Operation(summary = "装配清单-获取部件列表")
|
||||||
public CommonResult<List<OrderComponentRespVO>> getComponentList(@RequestBody OrderDetailComponentListReqVO reqVO) {
|
public CommonResult<List<OrderComponentRespVO>> getComponentList(@RequestBody AssemblyListComponentPageReqVO reqVO) {
|
||||||
return CommonResult.success(assemblyListService.getComponentList(reqVO));
|
return CommonResult.success(assemblyListService.getComponentList(reqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/list/view/plate/page")
|
||||||
|
@Operation(summary = "装配清单-获取订单部件下的板件视图分页列表数据")
|
||||||
|
public CommonResult<PageResult<OrderViewPlatePageRespVO>> getComponentViewPlatesPage(@Valid @RequestBody AssemblyListComponentPageReqVO pageReqVO) {
|
||||||
|
return success(assemblyListService.getViewComponentPage(pageReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/list/view/plate/cadinfo")
|
||||||
|
@Operation(summary = "装配清单-获取订单部件下的所有板件视图列表数据")
|
||||||
|
public CommonResult<List<OrderViewPlatePageRespVO>> getComponentViewPlates(@Valid @RequestBody AssemblyListComponentPageReqVO pageReqVO) {
|
||||||
|
return success(assemblyListService.getViewComponentPlatesCadInfo(pageReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/process/{id}")
|
@PostMapping("/process/{id}")
|
||||||
@Operation(summary = "装配清单-加工部件")
|
@Operation(summary = "装配清单-加工部件")
|
||||||
@Parameter(name = "id", description = "部件编号", required = true, example = "1024")
|
@Parameter(name = "id", description = "部件编号", required = true, example = "1024")
|
||||||
|
|||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
package com.cf.imes.module.executor.controller.admin.assemblylist.vo;
|
||||||
|
|
||||||
|
import com.cf.imes.framework.common.pojo.PageParam;
|
||||||
|
import com.cf.imes.framework.common.validation.InEnum;
|
||||||
|
import com.cf.imes.module.executor.enums.ordercomponent.OrderComponentProcessStatusEnum;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author Gqr
|
||||||
|
* @since 2026/2/2 11:34
|
||||||
|
*/
|
||||||
|
@Schema(description = "管理后台 - 装配清单 - 订单部件视图分页查询 Request VO")
|
||||||
|
@Data
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AssemblyListComponentPageReqVO extends PageParam {
|
||||||
|
@Schema(description = "订单编号", example = "[1,2]")
|
||||||
|
@Size(max = 100, message = "{order.component.assemble.req.orderIds.max}")
|
||||||
|
private List<Long> orderIds;
|
||||||
|
|
||||||
|
@Schema(description = "部件编号", example = "[1,2]")
|
||||||
|
@Size(max = 200, message = "{order.detail.component.list.query.componentIds.max}")
|
||||||
|
private Set<Long> componentIds;
|
||||||
|
|
||||||
|
@Schema(description = "部件名称", example = "部件")
|
||||||
|
@Length(max = 64, message = "{order.component.assemble.req.name.max}")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "加工状态:0不加工、1未加工、2已加工", example = "1")
|
||||||
|
@InEnum(OrderComponentProcessStatusEnum.class)
|
||||||
|
private Integer processStatus;
|
||||||
|
}
|
||||||
+14
@@ -204,4 +204,18 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
|||||||
@Param("groupId") Long groupId,
|
@Param("groupId") Long groupId,
|
||||||
@Param("componentIds") Set<Long> componentIds,
|
@Param("componentIds") Set<Long> componentIds,
|
||||||
@Param("cadView") boolean cadView);
|
@Param("cadView") boolean cadView);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询订单板件视图数据
|
||||||
|
*
|
||||||
|
* @param page 分页参数
|
||||||
|
* @param orderId 订单ID
|
||||||
|
* @param componentIds 部件ID列表
|
||||||
|
* @param cadView 是否需要cad图纸内信息:cad_view_id、seal_left、seal_down、seal_right、seal_up
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
IPage<OrderBodyViewPlatesPageDO> selectOrdersViewPlatesPage(@Param("page") IPage<OrderBodyViewPlatesPageDO> page,
|
||||||
|
@Param("orderIds") List<Long> orderId,
|
||||||
|
@Param("componentIds") Set<Long> componentIds,
|
||||||
|
@Param("cadView") boolean cadView);
|
||||||
}
|
}
|
||||||
+18
-2
@@ -1,7 +1,9 @@
|
|||||||
package com.cf.imes.module.executor.service.assemblylist;
|
package com.cf.imes.module.executor.service.assemblylist;
|
||||||
|
|
||||||
|
import com.cf.imes.framework.common.pojo.PageResult;
|
||||||
|
import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderDetailComponentListReqVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPlatePageRespVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -18,7 +20,21 @@ public interface AssemblyListService {
|
|||||||
* @param reqVO
|
* @param reqVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<OrderComponentRespVO> getComponentList(OrderDetailComponentListReqVO reqVO);
|
List<OrderComponentRespVO> getComponentList(AssemblyListComponentPageReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单下板件视图分页列表
|
||||||
|
* @param reqVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PageResult<OrderViewPlatePageRespVO> getViewComponentPage(AssemblyListComponentPageReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部件和下级所有的板件视图列表
|
||||||
|
* @param reqVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderViewPlatePageRespVO> getViewComponentPlatesCadInfo(AssemblyListComponentPageReqVO reqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加工部件
|
* 加工部件
|
||||||
|
|||||||
+181
-18
@@ -8,18 +8,24 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import cn.hutool.crypto.digest.DigestUtil;
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
|
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||||
|
import com.cf.imes.framework.common.pojo.PageParam;
|
||||||
|
import com.cf.imes.framework.common.pojo.PageResult;
|
||||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||||
import com.cf.imes.framework.common.util.json.JsonUtils;
|
import com.cf.imes.framework.common.util.json.JsonUtils;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentTreeCompareVO;
|
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentTreeCompareVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderDetailComponentListReqVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPlatePageRespVO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderBodyViewPlatesPageDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.ordercomponent.OrderComponentDO;
|
import com.cf.imes.module.executor.dal.dataobject.ordercomponent.OrderComponentDO;
|
||||||
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
||||||
|
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
|
||||||
import com.cf.imes.module.executor.dal.mysql.ordercomponent.OrderComponentMapper;
|
import com.cf.imes.module.executor.dal.mysql.ordercomponent.OrderComponentMapper;
|
||||||
import com.cf.imes.module.executor.enums.ordercomponent.OrderComponentProcessStatusEnum;
|
import com.cf.imes.module.executor.enums.ordercomponent.OrderComponentProcessStatusEnum;
|
||||||
import com.cf.imes.module.system.api.assemblyconfig.AssemblyConfigApi;
|
import com.cf.imes.module.system.api.assemblyconfig.AssemblyConfigApi;
|
||||||
@@ -33,6 +39,7 @@ import java.util.Collections;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -43,7 +50,6 @@ import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONE
|
|||||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_NOT_EXIST;
|
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_NOT_EXIST;
|
||||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_NOT_PROCESS;
|
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_NOT_PROCESS;
|
||||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_PROCESSED_REPEAT;
|
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_PROCESSED_REPEAT;
|
||||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装配清单 ServiceImpl 实现类
|
* 装配清单 ServiceImpl 实现类
|
||||||
@@ -62,16 +68,15 @@ public class AssemblyListServiceImpl implements AssemblyListService {
|
|||||||
@Resource
|
@Resource
|
||||||
private AssemblyConfigApi assemblyConfigApi;
|
private AssemblyConfigApi assemblyConfigApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private OrderItemMapper orderItemMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrderComponentRespVO> getComponentList(OrderDetailComponentListReqVO reqVO) {
|
public List<OrderComponentRespVO> getComponentList(AssemblyListComponentPageReqVO reqVO) {
|
||||||
Set<Long> componentIds = reqVO.getComponentIds();
|
Set<Long> componentIds = reqVO.getComponentIds();
|
||||||
if (CollUtil.isEmpty(componentIds)) {
|
if (CollUtil.isEmpty(componentIds)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
// 校验订单
|
|
||||||
Long orderId = reqVO.getOrderId();
|
|
||||||
OrderDO orderDO = orderMapper.selectById(orderId);
|
|
||||||
AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS);
|
|
||||||
|
|
||||||
// 查询入参部件
|
// 查询入参部件
|
||||||
List<OrderComponentDO> componentDOS = orderComponentMapper.selectByIds(componentIds);
|
List<OrderComponentDO> componentDOS = orderComponentMapper.selectByIds(componentIds);
|
||||||
@@ -163,14 +168,13 @@ public class AssemblyListServiceImpl implements AssemblyListService {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<OrderComponentRespVO> getProcessedComponentList(OrderDetailComponentListReqVO reqVO, List<Long> topIds) {
|
private List<OrderComponentRespVO> getProcessedComponentList(AssemblyListComponentPageReqVO reqVO, List<Long> topIds) {
|
||||||
// 根据部件的topid查询树上所有已加工节点
|
// 根据部件的topid查询树上所有已加工节点
|
||||||
List<OrderComponentDO> topProcessedComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
List<OrderComponentDO> topProcessedComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
||||||
.in(OrderComponentDO::getTopId, topIds)
|
.in(OrderComponentDO::getTopId, topIds)
|
||||||
.eq(OrderComponentDO::getOrderId, reqVO.getOrderId())
|
.in(OrderComponentDO::getOrderId, reqVO.getOrderIds())
|
||||||
.eqIfPresent(OrderComponentDO::getDeleted, reqVO.isDeleted())
|
|
||||||
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
||||||
.eqIfPresent(OrderComponentDO::getProcessStatus, reqVO.getProcessStatus())
|
.eqIfPresent(OrderComponentDO::getProcessStatus, OrderComponentProcessStatusEnum.PROCESSED.getStatus())
|
||||||
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
||||||
return BeanUtil.copyToList(topProcessedComponentList, OrderComponentRespVO.class);
|
return BeanUtil.copyToList(topProcessedComponentList, OrderComponentRespVO.class);
|
||||||
}
|
}
|
||||||
@@ -182,12 +186,11 @@ public class AssemblyListServiceImpl implements AssemblyListService {
|
|||||||
* @param reqVO
|
* @param reqVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<OrderComponentRespVO> getUnProcessedComponentList(OrderDetailComponentListReqVO reqVO, List<Long> topIds, boolean showAll) {
|
private List<OrderComponentRespVO> getUnProcessedComponentList(AssemblyListComponentPageReqVO reqVO, List<Long> topIds, boolean showAll) {
|
||||||
// 根据部件的topid查询树上所有已加工节点
|
// 根据部件的topid查询树上所有已加工节点
|
||||||
List<OrderComponentDO> topUnProcessedComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
List<OrderComponentDO> topUnProcessedComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
||||||
.in(OrderComponentDO::getTopId, topIds)
|
.in(OrderComponentDO::getTopId, topIds)
|
||||||
.eq(OrderComponentDO::getOrderId, reqVO.getOrderId())
|
.in(OrderComponentDO::getOrderId, reqVO.getOrderIds())
|
||||||
.eqIfPresent(OrderComponentDO::getDeleted, reqVO.isDeleted())
|
|
||||||
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
||||||
.neIfPresent(OrderComponentDO::getProcessStatus, showAll ? null : OrderComponentProcessStatusEnum.PROCESSED.getStatus())
|
.neIfPresent(OrderComponentDO::getProcessStatus, showAll ? null : OrderComponentProcessStatusEnum.PROCESSED.getStatus())
|
||||||
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
||||||
@@ -210,12 +213,11 @@ public class AssemblyListServiceImpl implements AssemblyListService {
|
|||||||
* @param reqVO
|
* @param reqVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<OrderComponentRespVO> getNotProcessComponentList(OrderDetailComponentListReqVO reqVO, List<Long> topIds) {
|
private List<OrderComponentRespVO> getNotProcessComponentList(AssemblyListComponentPageReqVO reqVO, List<Long> topIds) {
|
||||||
// 根据部件的topid查询树上所有节点
|
// 根据部件的topid查询树上所有节点
|
||||||
List<OrderComponentDO> topComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
List<OrderComponentDO> topComponentList = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
||||||
.in(OrderComponentDO::getTopId, topIds)
|
.in(OrderComponentDO::getTopId, topIds)
|
||||||
.eq(OrderComponentDO::getOrderId, reqVO.getOrderId())
|
.in(OrderComponentDO::getOrderId, reqVO.getOrderIds())
|
||||||
.eqIfPresent(OrderComponentDO::getDeleted, reqVO.isDeleted())
|
|
||||||
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
.likeIfPresent(OrderComponentDO::getName, reqVO.getName())
|
||||||
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
.select(OrderComponentDO::getId, OrderComponentDO::getPid, OrderComponentDO::getName, OrderComponentDO::getProcessStatus));
|
||||||
|
|
||||||
@@ -618,4 +620,165 @@ public class AssemblyListServiceImpl implements AssemblyListService {
|
|||||||
this.level = level;
|
this.level = level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<OrderViewPlatePageRespVO> getViewComponentPage(AssemblyListComponentPageReqVO pageReqVO) {
|
||||||
|
Set<Long> componentIds = pageReqVO.getComponentIds();
|
||||||
|
if (CollUtil.isEmpty(componentIds)) {
|
||||||
|
return new PageResult<>(Collections.emptyList(), 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1、查询顶级
|
||||||
|
List<OrderComponentDO> componentDOS = orderComponentMapper.selectByIds(componentIds);
|
||||||
|
if (CollUtil.isEmpty(componentDOS) || componentDOS.size() != componentIds.size()) {
|
||||||
|
throw new ServiceException(ORDER_COMPONENT_NOT_EXIST);
|
||||||
|
}
|
||||||
|
// 整理所在订单id列表
|
||||||
|
List<Long> orderIds = componentDOS.stream()
|
||||||
|
.map(OrderComponentDO::getOrderId)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
// 整理所在顶级配件id列表
|
||||||
|
List<Long> topIds = componentDOS.stream()
|
||||||
|
.map(OrderComponentDO::getTopId)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
// 2、把下级部件id作为查询条件
|
||||||
|
List<OrderComponentDO> orderComponentDOS = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
||||||
|
.in(OrderComponentDO::getTopId, topIds)
|
||||||
|
.in(OrderComponentDO::getOrderId, orderIds)
|
||||||
|
.eq(OrderComponentDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||||
|
.select(OrderComponentDO::getId, OrderComponentDO::getCadViewFileId, OrderComponentDO::getPid));
|
||||||
|
|
||||||
|
Set<Long> queryComponentIds = new HashSet<>();
|
||||||
|
if (CollUtil.isNotEmpty(orderComponentDOS)) {
|
||||||
|
for (OrderComponentDO co : componentDOS) {
|
||||||
|
queryComponentIds.addAll(getChildrenIds(co, orderComponentDOS));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new PageResult<>();
|
||||||
|
}
|
||||||
|
// 整理出id和cadViewFileId的对应关系
|
||||||
|
Map<Long, Long> cadViewFileIdMap = orderComponentDOS.stream()
|
||||||
|
.collect(Collectors.toMap(OrderComponentDO::getId, OrderComponentDO::getCadViewFileId));
|
||||||
|
|
||||||
|
// 分页查询板件
|
||||||
|
PageDTO<OrderBodyViewPlatesPageDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||||
|
IPage<OrderBodyViewPlatesPageDO> pageRes = orderItemMapper.selectOrdersViewPlatesPage(page, orderIds, queryComponentIds, false);
|
||||||
|
long total = pageRes.getTotal();
|
||||||
|
List<OrderBodyViewPlatesPageDO> records = pageRes.getRecords();
|
||||||
|
|
||||||
|
List<OrderViewPlatePageRespVO> resultList = new ArrayList<>();
|
||||||
|
if(total > 0) {
|
||||||
|
resultList = records.stream().map(item -> {
|
||||||
|
OrderViewPlatePageRespVO vo = new OrderViewPlatePageRespVO();
|
||||||
|
BeanUtil.copyProperties(item, vo);
|
||||||
|
|
||||||
|
vo.setCadViewFileId(cadViewFileIdMap.get(item.getCompId()));
|
||||||
|
return vo;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
return new PageResult<>(resultList, total);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderViewPlatePageRespVO> getViewComponentPlatesCadInfo(AssemblyListComponentPageReqVO pageReqVO) {
|
||||||
|
List<OrderViewPlatePageRespVO> emptyList = Collections.emptyList();
|
||||||
|
Set<Long> componentIds = pageReqVO.getComponentIds();
|
||||||
|
if (CollUtil.isEmpty(componentIds)) {
|
||||||
|
return emptyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1、查询顶级
|
||||||
|
List<OrderComponentDO> componentDOS = orderComponentMapper.selectByIds(componentIds);
|
||||||
|
if (CollUtil.isEmpty(componentDOS) || componentDOS.size() != componentIds.size()) {
|
||||||
|
throw new ServiceException(ORDER_COMPONENT_NOT_EXIST);
|
||||||
|
}
|
||||||
|
// 整理所在订单id列表
|
||||||
|
List<Long> orderIds = componentDOS.stream()
|
||||||
|
.map(OrderComponentDO::getOrderId)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
// 整理所在顶级配件id列表
|
||||||
|
List<Long> topIds = componentDOS.stream()
|
||||||
|
.map(OrderComponentDO::getTopId)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
// 2、把下级部件id作为查询条件
|
||||||
|
List<OrderComponentDO> orderComponentDOS = orderComponentMapper.selectList(new LambdaQueryWrapperX<OrderComponentDO>()
|
||||||
|
.in(OrderComponentDO::getTopId, topIds)
|
||||||
|
.in(OrderComponentDO::getOrderId, orderIds)
|
||||||
|
.eq(OrderComponentDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||||
|
.select(OrderComponentDO::getId, OrderComponentDO::getCadViewFileId, OrderComponentDO::getPid));
|
||||||
|
Set<Long> queryComponentIds = new HashSet<>();
|
||||||
|
if (CollUtil.isNotEmpty(orderComponentDOS)) {
|
||||||
|
for (OrderComponentDO co : componentDOS) {
|
||||||
|
queryComponentIds.addAll(getChildrenIds(co, orderComponentDOS));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return emptyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 整理出id和cadViewFileId的对应关系
|
||||||
|
Map<Long, Long> cadViewFileIdMap = orderComponentDOS.stream()
|
||||||
|
.collect(Collectors.toMap(OrderComponentDO::getId, OrderComponentDO::getCadViewFileId));
|
||||||
|
|
||||||
|
// 查询所有板件的视图所需信息
|
||||||
|
PageDTO<OrderBodyViewPlatesPageDO> page = new PageDTO<>(1, PageParam.PAGE_SIZE_NONE);
|
||||||
|
IPage<OrderBodyViewPlatesPageDO> viewPlatesPage = orderItemMapper.selectOrdersViewPlatesPage(page, orderIds, queryComponentIds, true);
|
||||||
|
List<OrderBodyViewPlatesPageDO> records = viewPlatesPage.getRecords();
|
||||||
|
|
||||||
|
List<OrderViewPlatePageRespVO> resultList = new ArrayList<>();
|
||||||
|
if(CollUtil.isNotEmpty(records)) {
|
||||||
|
resultList = records.stream().map(item -> {
|
||||||
|
OrderViewPlatePageRespVO vo = new OrderViewPlatePageRespVO();
|
||||||
|
BeanUtil.copyProperties(item, vo);
|
||||||
|
|
||||||
|
vo.setCadViewFileId(cadViewFileIdMap.get(item.getCompId()));
|
||||||
|
return vo;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 整理出需要删除的部件id列表
|
||||||
|
*
|
||||||
|
* @param componentDO
|
||||||
|
* @param componentOnTop
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Set<Long> getChildrenIds(OrderComponentDO componentDO, List<OrderComponentDO> componentOnTop) {
|
||||||
|
// 3、整理出真正的下级(通过 pid 逐级确认)
|
||||||
|
Set<Long> needDeleteIds = new HashSet<>();
|
||||||
|
needDeleteIds.add(componentDO.getId());
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(componentOnTop)) {
|
||||||
|
|
||||||
|
// 先构建 pid -> children 映射
|
||||||
|
Map<Long, List<OrderComponentDO>> childrenMap = componentOnTop.stream()
|
||||||
|
.collect(Collectors.groupingBy(OrderComponentDO::getPid));
|
||||||
|
|
||||||
|
// 用队列逐级往下找
|
||||||
|
Deque<Long> queue = new ArrayDeque<>();
|
||||||
|
queue.add(componentDO.getId());
|
||||||
|
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
|
Long parentId = queue.poll();
|
||||||
|
|
||||||
|
List<OrderComponentDO> children = childrenMap.get(parentId);
|
||||||
|
if (CollUtil.isEmpty(children)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (OrderComponentDO child : children) {
|
||||||
|
Long childId = child.getId();
|
||||||
|
if (needDeleteIds.add(childId)) { // 防重复
|
||||||
|
queue.add(childId); // 继续往下找
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return needDeleteIds;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+31
@@ -567,4 +567,35 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectOrdersViewPlatesPage" resultType="com.cf.imes.module.executor.dal.dataobject.orderItem.OrderBodyViewPlatesPageDO">
|
||||||
|
SELECT p.order_id, p.plate_no, p.name, p.width, p.height, p.thickness, g.material, g.color, p.custom_plate_no, p.cad_plate_no as customNumber, p.id, i.body_id, p.cad_view_id
|
||||||
|
<choose>
|
||||||
|
<when test="cadView">
|
||||||
|
, p.seal_left, p.seal_down, p.seal_right, p.seal_up
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
, p.seal_left, p.seal_down, p.seal_right, p.seal_up, p.area, p.texture, p.is_special_shaped, p.is_sculpt, p.is_row_hole, p.remark
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
<if test="componentIds != null and componentIds.size() > 0">
|
||||||
|
, i.comp_id
|
||||||
|
</if>
|
||||||
|
FROM order_item i
|
||||||
|
LEFT JOIN `order_plate` p ON i.plate_id = p.id
|
||||||
|
LEFT JOIN `order_goods` g ON g.id = p.goods_id
|
||||||
|
WHERE p.deleted = false and i.plate_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="componentIds != null and componentIds.size() > 0">
|
||||||
|
AND i.comp_id in
|
||||||
|
<foreach item="componentId" collection="componentIds" open="(" separator="," close=")">
|
||||||
|
#{componentId}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
+2
-4
@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -70,9 +69,8 @@ public class AssemblyConfigController {
|
|||||||
@PostMapping("/new/{configId}")
|
@PostMapping("/new/{configId}")
|
||||||
@Operation(summary = "新增加工部件")
|
@Operation(summary = "新增加工部件")
|
||||||
@Parameter(name = "configId", description = "装配设置编号", required = true)
|
@Parameter(name = "configId", description = "装配设置编号", required = true)
|
||||||
@Parameter(name = "name", description = "新装配设置名称", required = true)
|
public CommonResult<Boolean> newConfig(@PathVariable Long configId) {
|
||||||
public CommonResult<Boolean> newConfig(@PathVariable Long configId, @RequestParam(value = "name") String name) {
|
assemblyConfigService.newConfig(configId);
|
||||||
assemblyConfigService.newConfig(configId, name);
|
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -47,9 +47,8 @@ public interface AssemblyConfigService {
|
|||||||
* 新增加工部件
|
* 新增加工部件
|
||||||
*
|
*
|
||||||
* @param configId
|
* @param configId
|
||||||
* @param name
|
|
||||||
*/
|
*/
|
||||||
void newConfig(Long configId, String name);
|
void newConfig(Long configId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除已配置的加工部件
|
* 移除已配置的加工部件
|
||||||
|
|||||||
+8
-6
@@ -316,16 +316,18 @@ public class AssemblyConfigServiceImpl implements AssemblyConfigService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newConfig(Long configId, String name) {
|
public void newConfig(Long configId) {
|
||||||
Long organId = SecurityFrameworkUtils.getUserOrganId();
|
Long organId = SecurityFrameworkUtils.getUserOrganId();
|
||||||
|
|
||||||
// 1、校验本身
|
// 1、校验本身
|
||||||
AssemblyConfigDO assemblyConfigDO = getById(configId, organId);
|
AssemblyConfigDO assemblyConfigDO = getById(configId, organId);
|
||||||
|
String existName = assemblyConfigDO.getComponentName();
|
||||||
|
|
||||||
// 2、校验新的名字是否已有存在的部件
|
// 2、校验新的名字是否已有存在的部件
|
||||||
boolean exists = assemblyConfigMapper.exists(new LambdaQueryWrapper<AssemblyConfigDO>()
|
boolean exists = assemblyConfigMapper.exists(new LambdaQueryWrapper<AssemblyConfigDO>()
|
||||||
.eq(AssemblyConfigDO::getOrganId, organId)
|
.eq(AssemblyConfigDO::getOrganId, organId)
|
||||||
.eq(AssemblyConfigDO::getComponentName, name)
|
.eq(AssemblyConfigDO::getComponentName, existName)
|
||||||
|
.ne(AssemblyConfigDO::getId, configId)
|
||||||
.eq(AssemblyConfigDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
.eq(AssemblyConfigDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||||
.eq(AssemblyConfigDO::getStatus, AssemblyConfigStatusEnum.CONFIGURED.getStatus())
|
.eq(AssemblyConfigDO::getStatus, AssemblyConfigStatusEnum.CONFIGURED.getStatus())
|
||||||
);
|
);
|
||||||
@@ -333,8 +335,8 @@ public class AssemblyConfigServiceImpl implements AssemblyConfigService {
|
|||||||
if (exists) {
|
if (exists) {
|
||||||
// 重名 → 自动生成新名字
|
// 重名 → 自动生成新名字
|
||||||
// seq 表里直接用 newName 作为 baseName
|
// seq 表里直接用 newName 作为 baseName
|
||||||
int seq = nextSeq(organId, name);
|
int seq = nextSeq(organId, existName);
|
||||||
String newName = name + " " + seq;
|
String newName = existName + " " + seq;
|
||||||
|
|
||||||
// 再次校验生成的新名字是否意外重复
|
// 再次校验生成的新名字是否意外重复
|
||||||
boolean newExists = assemblyConfigMapper.exists(new LambdaQueryWrapper<AssemblyConfigDO>()
|
boolean newExists = assemblyConfigMapper.exists(new LambdaQueryWrapper<AssemblyConfigDO>()
|
||||||
@@ -343,7 +345,7 @@ public class AssemblyConfigServiceImpl implements AssemblyConfigService {
|
|||||||
.eq(AssemblyConfigDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
.eq(AssemblyConfigDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||||
.eq(AssemblyConfigDO::getStatus, AssemblyConfigStatusEnum.CONFIGURED.getStatus())
|
.eq(AssemblyConfigDO::getStatus, AssemblyConfigStatusEnum.CONFIGURED.getStatus())
|
||||||
);
|
);
|
||||||
AssertUtils.isTrue(newExists, ASSEMBLY_CONFIG_NEW_CONFIG_NAME_EXIST, name);
|
AssertUtils.isTrue(newExists, ASSEMBLY_CONFIG_NEW_CONFIG_NAME_EXIST, newName);
|
||||||
|
|
||||||
// 新名更新到hash和json中
|
// 新名更新到hash和json中
|
||||||
String structureJson = assemblyConfigDO.getStructureJson();
|
String structureJson = assemblyConfigDO.getStructureJson();
|
||||||
@@ -366,7 +368,7 @@ public class AssemblyConfigServiceImpl implements AssemblyConfigService {
|
|||||||
.set(AssemblyConfigDO::getStructureJson, newJson)
|
.set(AssemblyConfigDO::getStructureJson, newJson)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException(ASSEMBLY_CONFIG_NO_NEED_NEW_CONFIG, name);
|
throw new ServiceException(ASSEMBLY_CONFIG_NO_NEED_NEW_CONFIG, existName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user