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)
|
||||
@PreAuthorize("@ss.hasPermission('placeorder:delete')")
|
||||
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 = "获取未排单的生产单的柜体和房间名称")
|
||||
@Parameter(name = "orderIds", description = "生产单ID", required = true)
|
||||
@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));
|
||||
}
|
||||
|
||||
+3
@@ -75,4 +75,7 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
||||
}
|
||||
|
||||
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) {
|
||||
return selectList(new LambdaQueryWrapperX<PlateDO>()
|
||||
|
||||
+67
-32
@@ -720,7 +720,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
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());
|
||||
@@ -747,6 +749,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
List<Long> planConfigIds = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList();
|
||||
|
||||
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
||||
|
||||
@@ -791,9 +794,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList);
|
||||
|
||||
@@ -1432,14 +1433,26 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
.filter(remainBoard -> goodsIds.contains(remainBoard.getGoodsId()))
|
||||
.flatMap(remainBoard -> remainBoard.getPlaceBoardList().stream())
|
||||
.filter(board -> goodsNo.contains(board.getBoardId()) && !board.getCutedType().equals(cutedType) &&
|
||||
(cutedType.equals(OrderPlateCutStatusEnum.OPENING.getStatus()) ?
|
||||
!board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus()) : true))
|
||||
(!cutedType.equals(OrderPlateCutStatusEnum.OPENING.getStatus()) || !board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus())))
|
||||
.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();
|
||||
board.setCutedType(cutedType);
|
||||
planNos.addAll(board.getBlocks().stream()
|
||||
.map(RemainBoardInfo.Blocks::getBlockId)
|
||||
.toList());
|
||||
board.setCutedType(cutedType);
|
||||
planNos.addAll(board.getBlocks().stream()
|
||||
.map(RemainBoardInfo.Blocks::getBlockId)
|
||||
.toList());
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1463,6 +1476,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
cutedBlockNumber += blockCount;
|
||||
}
|
||||
|
||||
cutedBoardNumber = cutedBoardNumber < 0 ? 0 : cutedBoardNumber;
|
||||
|
||||
cutedBlockNumber = cutedBlockNumber < 0 ? 0 : cutedBlockNumber;
|
||||
|
||||
optimizeBoardModelDO.setCutedBoardNumber(cutedBoardNumber);
|
||||
optimizeBoardModelDO.setCutedBlockNumber(cutedBlockNumber);
|
||||
|
||||
@@ -1535,28 +1552,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
// 未开料
|
||||
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
|
||||
|
||||
planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
|
||||
planDO.setProduceTime(null);
|
||||
|
||||
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);
|
||||
}
|
||||
OptimizePlanServiceImpl o = (OptimizePlanServiceImpl) AopContext.currentProxy();
|
||||
o.updateOrderAndPlanByCutStatusIsNoCutting(planDO,goodsNum,orderIds);
|
||||
|
||||
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){
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ public interface PlanService {
|
||||
*
|
||||
* @param planIds 编号
|
||||
*/
|
||||
Boolean deletePlan(List<Long> planIds);
|
||||
void deletePlan(List<Long> planIds);
|
||||
|
||||
/**
|
||||
* 获得生产单开料排单
|
||||
|
||||
+5
-3
@@ -365,7 +365,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deletePlan(List<Long> planIds) {
|
||||
public void deletePlan(List<Long> 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
|
||||
planMapper.deleteBatchIds(planIds);
|
||||
@@ -455,8 +459,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
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) {
|
||||
|
||||
List<FieldValue> fieldValues = values.stream().map(FieldValue::of).toList();
|
||||
|
||||
+15
@@ -416,5 +416,20 @@
|
||||
|
||||
</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>
|
||||
+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_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 THIS_CONFIG_DATA_ERROR = new ErrorCode(1_002_040_020, "当前系统配置的数据有误,请重新尝试排序");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user