mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 13:42:07 +08:00
组件保存优化结构新结构适配
This commit is contained in:
+12
-2
@@ -100,12 +100,22 @@ public class BoardLayoutResultSummary {
|
|||||||
private List<String> customBlockNos;
|
private List<String> customBlockNos;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开始开料板ID列表
|
* 开始开料的组件内部板件 ID 列表。
|
||||||
*/
|
*/
|
||||||
private List<String> startCutBlockIds;
|
private List<String> startCutBlockIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束开料板ID列表
|
* 开始开料的自定义板件编号列表,对应 MES 的板件短号。
|
||||||
|
*/
|
||||||
|
private List<String> customStartCutBlockNos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束开料的组件内部板件 ID 列表。
|
||||||
*/
|
*/
|
||||||
private List<String> endCutBlockIds;
|
private List<String> endCutBlockIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束开料的自定义板件编号列表,对应 MES 的板件短号。
|
||||||
|
*/
|
||||||
|
private List<String> customEndCutBlockNos;
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -1611,7 +1611,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
if (planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) {
|
if (planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) {
|
||||||
throw new ServiceException(PLAN_PLATE_IS_CUT);
|
throw new ServiceException(PLAN_PLATE_IS_CUT);
|
||||||
}
|
}
|
||||||
List<String> optimizatePlateNoList = layoutResultSummary.stream().flatMap(summary -> summary.getStartCutBlockIds().stream()).toList();
|
List<String> optimizatePlateNoList = layoutResultSummary.stream()
|
||||||
|
.flatMap(summary -> summary.getCustomStartCutBlockNos().stream())
|
||||||
|
.toList();
|
||||||
|
|
||||||
// 更新开料中状态
|
// 更新开料中状态
|
||||||
plateMapper.updatePlanPlateCuttingStatus(planId, orderIds, optimizatePlateNoList);
|
plateMapper.updatePlanPlateCuttingStatus(planId, orderIds, optimizatePlateNoList);
|
||||||
@@ -1638,7 +1640,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
if (planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) {
|
if (planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) {
|
||||||
throw new ServiceException(PLAN_OPTIMIZE_DATA_ALL_OPENED);
|
throw new ServiceException(PLAN_OPTIMIZE_DATA_ALL_OPENED);
|
||||||
}
|
}
|
||||||
List<String> optimizatePlateNoList = layoutResultSummary.stream().flatMap(summary -> summary.getEndCutBlockIds().stream()).toList();
|
List<String> optimizatePlateNoList = layoutResultSummary.stream()
|
||||||
|
.flatMap(summary -> summary.getCustomEndCutBlockNos().stream())
|
||||||
|
.toList();
|
||||||
// 累计开料大板数量
|
// 累计开料大板数量
|
||||||
int endCutBoardCount = layoutResultSummary.stream().mapToInt(BoardLayoutResultSummary::getEndCutBoardCount).sum();
|
int endCutBoardCount = layoutResultSummary.stream().mapToInt(BoardLayoutResultSummary::getEndCutBoardCount).sum();
|
||||||
|
|
||||||
|
|||||||
+52
-2
@@ -8,6 +8,8 @@ import com.cf.imes.module.executor.controller.admin.plan.component.BoardLayoutRe
|
|||||||
import com.cf.imes.module.executor.controller.admin.plan.component.FlowSessionSavedContent;
|
import com.cf.imes.module.executor.controller.admin.plan.component.FlowSessionSavedContent;
|
||||||
import com.cf.imes.module.executor.controller.admin.plan.component.OptimizationResultsReqVO;
|
import com.cf.imes.module.executor.controller.admin.plan.component.OptimizationResultsReqVO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||||
|
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||||
|
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
||||||
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
|
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
|
||||||
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
|
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
|
||||||
import com.cf.imes.module.executor.enums.plan.FlowProcessStatus;
|
import com.cf.imes.module.executor.enums.plan.FlowProcessStatus;
|
||||||
@@ -23,7 +25,6 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -41,6 +42,8 @@ class OptimizePlanServiceImplComponentResultTest {
|
|||||||
private PlanMapper planMapper;
|
private PlanMapper planMapper;
|
||||||
@Mock
|
@Mock
|
||||||
private PlateMapper plateMapper;
|
private PlateMapper plateMapper;
|
||||||
|
@Mock
|
||||||
|
private OrderMapper orderMapper;
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private OptimizePlanServiceImpl optimizePlanService;
|
private OptimizePlanServiceImpl optimizePlanService;
|
||||||
@@ -68,16 +71,55 @@ class OptimizePlanServiceImplComponentResultTest {
|
|||||||
.doesNotContainValue("component-material-id");
|
.doesNotContainValue("component-material-id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldUseCustomStartCutBlockNosWhenStartingCut() {
|
||||||
|
Long planId = 1002L;
|
||||||
|
when(planMapper.selectById(planId)).thenReturn(plan(planId));
|
||||||
|
when(orderMapper.selectByIds(List.of(2001L))).thenReturn(List.of(new OrderDO()));
|
||||||
|
|
||||||
|
optimizePlanService.saveComponentOptimizationResults(
|
||||||
|
request(planId, FlowProcessStatus.IN_PROGRESS.getStatus()));
|
||||||
|
|
||||||
|
verify(plateMapper).updatePlanPlateCuttingStatus(
|
||||||
|
planId, List.of(2001L), List.of("custom-start-cut-block-1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldUseCustomEndCutBlockNosWhenCompletingCut() {
|
||||||
|
Long planId = 1003L;
|
||||||
|
when(planMapper.selectById(planId)).thenReturn(plan(planId));
|
||||||
|
when(plateMapper.updatePlanPlateCutStatus(
|
||||||
|
eq(planId), eq(List.of(2001L)), eq(List.of("custom-end-cut-block-1"))))
|
||||||
|
.thenReturn(1);
|
||||||
|
when(plateMapper.selectPlanAllCuttedOrderIdList(planId, List.of(2001L)))
|
||||||
|
.thenReturn(List.of());
|
||||||
|
|
||||||
|
optimizePlanService.saveComponentOptimizationResults(
|
||||||
|
request(planId, FlowProcessStatus.COMPLETED.getStatus()));
|
||||||
|
|
||||||
|
verify(plateMapper).updatePlanPlateCutStatus(
|
||||||
|
planId, List.of(2001L), List.of("custom-end-cut-block-1"));
|
||||||
|
}
|
||||||
|
|
||||||
private OptimizationResultsReqVO request(Long planId) {
|
private OptimizationResultsReqVO request(Long planId) {
|
||||||
|
return request(planId, FlowProcessStatus.NOT_STARTED.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
private OptimizationResultsReqVO request(Long planId, Integer processStatus) {
|
||||||
BoardLayoutResultSummary summary = new BoardLayoutResultSummary();
|
BoardLayoutResultSummary summary = new BoardLayoutResultSummary();
|
||||||
summary.setBoardCount(1);
|
summary.setBoardCount(1);
|
||||||
|
summary.setEndCutBoardCount(1);
|
||||||
summary.setMaterialIds(List.of("component-material-id"));
|
summary.setMaterialIds(List.of("component-material-id"));
|
||||||
summary.setCustomMaterialNos(List.of("custom-material-1"));
|
summary.setCustomMaterialNos(List.of("custom-material-1"));
|
||||||
summary.setPlacedBlockIds(List.of("component-block-id"));
|
summary.setPlacedBlockIds(List.of("component-block-id"));
|
||||||
summary.setCustomBlockNos(List.of("custom-block-1"));
|
summary.setCustomBlockNos(List.of("custom-block-1"));
|
||||||
|
summary.setStartCutBlockIds(List.of("component-start-cut-block-id"));
|
||||||
|
summary.setCustomStartCutBlockNos(List.of("custom-start-cut-block-1"));
|
||||||
|
summary.setEndCutBlockIds(List.of("component-end-cut-block-id"));
|
||||||
|
summary.setCustomEndCutBlockNos(List.of("custom-end-cut-block-1"));
|
||||||
|
|
||||||
FlowSessionSavedContent content = new FlowSessionSavedContent();
|
FlowSessionSavedContent content = new FlowSessionSavedContent();
|
||||||
content.setProcessStatus(FlowProcessStatus.NOT_STARTED.getStatus());
|
content.setProcessStatus(processStatus);
|
||||||
content.setLayoutResultSummary(List.of(summary));
|
content.setLayoutResultSummary(List.of(summary));
|
||||||
|
|
||||||
OptimizationResultsReqVO request = new OptimizationResultsReqVO();
|
OptimizationResultsReqVO request = new OptimizationResultsReqVO();
|
||||||
@@ -85,4 +127,12 @@ class OptimizePlanServiceImplComponentResultTest {
|
|||||||
request.setFlowSessionSavedContent(content);
|
request.setFlowSessionSavedContent(content);
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PlanDO plan(Long planId) {
|
||||||
|
PlanDO plan = new PlanDO();
|
||||||
|
plan.setId(planId);
|
||||||
|
plan.setOrderNos("[2001]");
|
||||||
|
plan.setStatus(PlanStatusEnum.NOCUTTING.getStatus());
|
||||||
|
return plan;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user