mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
禅道 1083,1056,优化生产保存优化数据,方案组优化数据逻辑更改
This commit is contained in:
+3
-2
@@ -61,7 +61,8 @@ public class PlanController {
|
|||||||
@Parameter(name = "ids", description = "排单ids", required = true)
|
@Parameter(name = "ids", description = "排单ids", required = true)
|
||||||
@PreAuthorize("@ss.hasPermission('placeorder:delete')")
|
@PreAuthorize("@ss.hasPermission('placeorder:delete')")
|
||||||
public CommonResult<Boolean> deletePlan(@RequestParam("ids") @NotEmpty @Size(max = 20,message = "最多可同时删除20个排单") List<Long> ids) {
|
public CommonResult<Boolean> deletePlan(@RequestParam("ids") @NotEmpty @Size(max = 20,message = "最多可同时删除20个排单") List<Long> ids) {
|
||||||
return success(planService.deletePlan(ids));
|
planService.deletePlan(ids);
|
||||||
|
return success(Boolean.TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -175,7 +176,7 @@ public class PlanController {
|
|||||||
@Operation(summary = "获取未排单的生产单的柜体和房间名称")
|
@Operation(summary = "获取未排单的生产单的柜体和房间名称")
|
||||||
@Parameter(name = "orderIds", description = "生产单ID", required = true)
|
@Parameter(name = "orderIds", description = "生产单ID", required = true)
|
||||||
@PreAuthorize("@ss.hasPermission('unplannedOrders:query')")
|
@PreAuthorize("@ss.hasPermission('unplannedOrders:query')")
|
||||||
public CommonResult<List<OrderRoomBodyList>> getOrderRoomBody(@Valid @NotEmpty(message = "生产单ID不能为空") @RequestParam @Size(max = 20,message = "最多可同时查询20个生产单信息") List<Long> orderIds) {
|
public CommonResult<List<OrderRoomBodyList>> getOrderRoomBody(@Valid @NotEmpty(message = "生产单ID不能为空") @RequestParam List<Long> orderIds) {
|
||||||
|
|
||||||
return success(planService.getOrderRoomBody(orderIds));
|
return success(planService.getOrderRoomBody(orderIds));
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -75,4 +75,7 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<Long> selectOrderPlateList(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
|
List<Long> selectOrderPlateList(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
|
||||||
|
|
||||||
|
Long selectIsCuttingPlate(@Param("planId") Long planId,@Param("organId") Long organId);
|
||||||
|
|
||||||
}
|
}
|
||||||
-11
@@ -269,17 +269,6 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// default List<PlateDO> selectIsOptimizedPlate(List<Long> orderId,List<Long> ids,List<Long> plateIds, Long organId) {
|
|
||||||
// return selectList(new LambdaQueryWrapperX<PlateDO>()
|
|
||||||
// .eq(PlateDO::getOrganId,organId)
|
|
||||||
// .eq(PlateDO::getDeleted,false)
|
|
||||||
// .inIfPresent(PlateDO::getOrderId,orderId)
|
|
||||||
// .inIfPresent(PlateDO::getGoodsId,ids)
|
|
||||||
// .eq(PlateDO::getIsOptimized,true)
|
|
||||||
// .select(PlateDO::getId,PlateDO::getId));
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
default List<PlateDO> selectPlateIsCuttingStatus(List<Long> orderIds,Long organId) {
|
default List<PlateDO> selectPlateIsCuttingStatus(List<Long> orderIds,Long organId) {
|
||||||
return selectList(new LambdaQueryWrapperX<PlateDO>()
|
return selectList(new LambdaQueryWrapperX<PlateDO>()
|
||||||
|
|||||||
+67
-32
@@ -720,7 +720,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
|
|
||||||
plateMapper.updateBatch(plateDOS);
|
plateMapper.updateBatch(plateDOS);
|
||||||
|
|
||||||
esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL);
|
// Long planConfigId = req.getPlanConfigId();
|
||||||
|
|
||||||
|
// esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,planConfigId,planId,ORDER_OPTIMIZE_PLATE_MODEL);
|
||||||
|
|
||||||
// 保存优化后的大板数据
|
// 保存优化后的大板数据
|
||||||
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS());
|
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS());
|
||||||
@@ -747,6 +749,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
|
|
||||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||||
|
|
||||||
|
List<Long> planConfigIds = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList();
|
||||||
|
|
||||||
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
||||||
|
|
||||||
@@ -791,9 +794,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
|
||||||
|
|
||||||
|
|
||||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList);
|
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList);
|
||||||
|
|
||||||
@@ -1432,14 +1433,26 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
.filter(remainBoard -> goodsIds.contains(remainBoard.getGoodsId()))
|
.filter(remainBoard -> goodsIds.contains(remainBoard.getGoodsId()))
|
||||||
.flatMap(remainBoard -> remainBoard.getPlaceBoardList().stream())
|
.flatMap(remainBoard -> remainBoard.getPlaceBoardList().stream())
|
||||||
.filter(board -> goodsNo.contains(board.getBoardId()) && !board.getCutedType().equals(cutedType) &&
|
.filter(board -> goodsNo.contains(board.getBoardId()) && !board.getCutedType().equals(cutedType) &&
|
||||||
(cutedType.equals(OrderPlateCutStatusEnum.OPENING.getStatus()) ?
|
(!cutedType.equals(OrderPlateCutStatusEnum.OPENING.getStatus()) || !board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus())))
|
||||||
!board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus()) : true))
|
|
||||||
.forEach(board -> {
|
.forEach(board -> {
|
||||||
|
if(cutedType.equals(OrderPlateCutStatusEnum.NOCUTTING.getStatus()) ) {
|
||||||
|
if(board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus())) {
|
||||||
|
goodsCount.incrementAndGet();
|
||||||
|
}
|
||||||
|
planNos.addAll(board.getBlocks().stream()
|
||||||
|
.map(RemainBoardInfo.Blocks::getBlockId)
|
||||||
|
.toList());
|
||||||
|
board.setCutedType(cutedType);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
goodsCount.incrementAndGet();
|
goodsCount.incrementAndGet();
|
||||||
board.setCutedType(cutedType);
|
board.setCutedType(cutedType);
|
||||||
planNos.addAll(board.getBlocks().stream()
|
planNos.addAll(board.getBlocks().stream()
|
||||||
.map(RemainBoardInfo.Blocks::getBlockId)
|
.map(RemainBoardInfo.Blocks::getBlockId)
|
||||||
.toList());
|
.toList());
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1463,6 +1476,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
cutedBlockNumber += blockCount;
|
cutedBlockNumber += blockCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cutedBoardNumber = cutedBoardNumber < 0 ? 0 : cutedBoardNumber;
|
||||||
|
|
||||||
|
cutedBlockNumber = cutedBlockNumber < 0 ? 0 : cutedBlockNumber;
|
||||||
|
|
||||||
optimizeBoardModelDO.setCutedBoardNumber(cutedBoardNumber);
|
optimizeBoardModelDO.setCutedBoardNumber(cutedBoardNumber);
|
||||||
optimizeBoardModelDO.setCutedBlockNumber(cutedBlockNumber);
|
optimizeBoardModelDO.setCutedBlockNumber(cutedBlockNumber);
|
||||||
|
|
||||||
@@ -1535,28 +1552,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
// 未开料
|
// 未开料
|
||||||
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
|
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
|
||||||
|
|
||||||
planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
|
OptimizePlanServiceImpl o = (OptimizePlanServiceImpl) AopContext.currentProxy();
|
||||||
planDO.setProduceTime(null);
|
o.updateOrderAndPlanByCutStatusIsNoCutting(planDO,goodsNum,orderIds);
|
||||||
|
|
||||||
if(goodsNum.equals(0L)){
|
|
||||||
planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
planMapper.updateById(planDO);
|
|
||||||
|
|
||||||
List<PlateDO> plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId());
|
|
||||||
List<Long> orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList();
|
|
||||||
|
|
||||||
orderIds.removeAll(orderIdList);
|
|
||||||
|
|
||||||
if(CollUtil.isNotEmpty(orderIds)){
|
|
||||||
|
|
||||||
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
|
|
||||||
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
|
|
||||||
|
|
||||||
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus()));
|
|
||||||
orderMapper.updateBatch(orderDOS);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -1617,6 +1614,44 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateOrderAndPlanByCutStatusIsNoCutting(PlanDO planDO,Long goodsNum,List<Long> orderIds){
|
||||||
|
|
||||||
|
planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
|
||||||
|
planDO.setProduceTime(null);
|
||||||
|
|
||||||
|
if(goodsNum.equals(0L)){
|
||||||
|
|
||||||
|
Long plateId = planItemMapper.selectIsCuttingPlate(planDO.getId(), getUserOrganId());
|
||||||
|
|
||||||
|
if(plateId == null){
|
||||||
|
planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
planMapper.updateById(planDO);
|
||||||
|
|
||||||
|
List<PlateDO> plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId());
|
||||||
|
List<Long> orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList();
|
||||||
|
|
||||||
|
orderIds.removeAll(orderIdList);
|
||||||
|
|
||||||
|
if(CollUtil.isNotEmpty(orderIds)){
|
||||||
|
|
||||||
|
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
|
||||||
|
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
|
||||||
|
|
||||||
|
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus()));
|
||||||
|
orderMapper.updateBatch(orderDOS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void validatePlanStatus(PlanDO planDO,List<Boolean> isLocks){
|
private void validatePlanStatus(PlanDO planDO,List<Boolean> isLocks){
|
||||||
|
|
||||||
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())){
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ public interface PlanService {
|
|||||||
*
|
*
|
||||||
* @param planIds 编号
|
* @param planIds 编号
|
||||||
*/
|
*/
|
||||||
Boolean deletePlan(List<Long> planIds);
|
void deletePlan(List<Long> planIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得生产单开料排单
|
* 获得生产单开料排单
|
||||||
|
|||||||
+5
-3
@@ -365,7 +365,7 @@ public class PlanServiceImpl implements PlanService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean deletePlan(List<Long> planIds) {
|
public void deletePlan(List<Long> planIds) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
List<PlanDO> planDOS = planMapper.selectBatchIds(planIds);
|
List<PlanDO> planDOS = planMapper.selectBatchIds(planIds);
|
||||||
|
|
||||||
@@ -384,6 +384,10 @@ public class PlanServiceImpl implements PlanService {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
if(CollUtil.isEmpty(orderIds)){
|
||||||
|
planMapper.deleteBatchIds(planDOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 删除排单信息,更新排单对应的余料板的排单ID为0
|
// 删除排单信息,更新排单对应的余料板的排单ID为0
|
||||||
planMapper.deleteBatchIds(planIds);
|
planMapper.deleteBatchIds(planIds);
|
||||||
@@ -455,8 +459,6 @@ public class PlanServiceImpl implements PlanService {
|
|||||||
orderMapper.updateBatch(orderList);
|
orderMapper.updateBatch(orderList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+21
@@ -236,6 +236,27 @@ public class EsUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void deleteEsDocument(String filedName1,String filedName2, Long value1,List<Long> values2, String index) {
|
||||||
|
|
||||||
|
List<FieldValue> fieldValues = values2.stream().map(FieldValue::of).toList();
|
||||||
|
|
||||||
|
DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
|
||||||
|
builder.index(index);
|
||||||
|
|
||||||
|
builder.query(q->q.bool(b->b.filter(f->{
|
||||||
|
f.term(t->t.field(filedName1).value(value1));
|
||||||
|
f.terms(t->t.field(filedName2).terms(v2->v2.value(fieldValues)));
|
||||||
|
return f;
|
||||||
|
})));
|
||||||
|
|
||||||
|
try {
|
||||||
|
elasticsearchClient.deleteByQuery(builder.build());
|
||||||
|
} catch (IOException | ElasticsearchException e) {
|
||||||
|
log.error("ES文档删除失败:", e.getMessage());
|
||||||
|
throw new ServiceException(ES_DATA_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void deleteEsDocument(String filedName,List<Long> values, String index) {
|
public void deleteEsDocument(String filedName,List<Long> values, String index) {
|
||||||
|
|
||||||
List<FieldValue> fieldValues = values.stream().map(FieldValue::of).toList();
|
List<FieldValue> fieldValues = values.stream().map(FieldValue::of).toList();
|
||||||
|
|||||||
+15
@@ -416,5 +416,20 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectIsCuttingPlate" resultType="java.lang.Long">
|
||||||
|
|
||||||
|
select distinct
|
||||||
|
opi.plate_id
|
||||||
|
from order_plan_item opi
|
||||||
|
left join order_plate op on opi.organ_id = op.organ_id and opi.order_id = op.order_id and opi.plate_id = op.id
|
||||||
|
|
||||||
|
where opi.organ_id = #{organId}
|
||||||
|
and opi.plan_id = #{planId}
|
||||||
|
and op.is_cutted in (1,2)
|
||||||
|
limit 1;
|
||||||
|
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
+1
@@ -372,4 +372,5 @@ public class ErrorCodeConstants {
|
|||||||
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR = new ErrorCode(1_002_040_017, "当前方案组的配置异常,请重新配置");
|
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR = new ErrorCode(1_002_040_017, "当前方案组的配置异常,请重新配置");
|
||||||
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_IS_PLAN = new ErrorCode(1_002_040_018, "当前方案组已在排单中使用,无法删除");
|
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_IS_PLAN = new ErrorCode(1_002_040_018, "当前方案组已在排单中使用,无法删除");
|
||||||
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_MACHINE_LABEL = new ErrorCode(1_002_040_019, "当前方案组对应的解析器的机台的标签数据为空,请检查机台的标签配置信息");
|
public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_MACHINE_LABEL = new ErrorCode(1_002_040_019, "当前方案组对应的解析器的机台的标签数据为空,请检查机台的标签配置信息");
|
||||||
|
public static final ErrorCode THIS_CONFIG_DATA_ERROR = new ErrorCode(1_002_040_020, "当前系统配置的数据有误,请重新尝试排序");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user