排单关联生产单状态修改

This commit is contained in:
liuzhaotian
2024-10-14 14:04:33 +08:00
parent a6efb5867e
commit 84c52409f2
6 changed files with 82 additions and 25 deletions
@@ -1,13 +1,10 @@
package com.cf.imes.module.executor.dal.dataobject.order;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.time.LocalDateTime;
/**
* 生产单表 order_{N} DO
@@ -66,7 +63,7 @@ public class OrderDO extends BaseDO {
*/
private Integer dataType;
/**
* 订单状态,订单状态,0空订单1新单2生产中3生产完成
* 订单状态,0空订单1新单2已排单3生产中4生产完成
*/
private Integer status;
/**
@@ -208,4 +208,9 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
List<GoodsDO> selectNoPlanGoodsList(@Param("orderId") Long orderId,@Param("goodsIds") List<Long> goodsIds,@Param("organId") Long organId);
List<Long> selectNoPlanOrdersList(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
}
@@ -21,6 +21,8 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList;
@@ -48,6 +50,7 @@ import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.machine.dto.CuttingRespDTO;
import com.cf.imes.module.system.api.machine.dto.MachineDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -133,6 +136,14 @@ public class PlanServiceImpl implements PlanService {
@Transactional(rollbackFor = Exception.class)
public Map<String,Long> createPlan(PlanSaveReqVO createReqVO) {
MachineDTO checkedData = machineApi.getMachineDetail(createReqVO.getMachineId()).getCheckedData();
AssertUtils.notEmpty(checkedData,MACHINE_NO_DATA_ERROR);
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
assert loginUser != null;
createReqVO.setOperator(loginUser.getNickname());
// todo 目前只考虑了非混单的情况,混单的情况待考虑
List<PlanSaveReqVO.Item> itemList = createReqVO.getItemList();
@@ -184,6 +195,11 @@ public class PlanServiceImpl implements PlanService {
}
List<OrderDO> orderDOList = orderMapper.selectBatchIds(orderIdList);
orderDOList.forEach(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus()));
orderMapper.updateBatch(orderDOList);
planMapper.insertBatch(planDOS);
@@ -227,6 +243,12 @@ public class PlanServiceImpl implements PlanService {
List<Long> orderIds = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getOrderId).toList();
List<OrderDO> orderDOList = orderMapper.selectBatchIds(orderIds);
orderDOList.forEach(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus()));
orderMapper.updateBatch(orderDOList);
// 修改新增的大板对应的板材为已优化
plateMapper.updatePlateOptimized(orderIds,ids,getUserOrganId());
@@ -353,6 +375,7 @@ public class PlanServiceImpl implements PlanService {
// 修改删除的大板对应的小板为未优化
plateMapper.updateNoPlateOptimized(orderIds, goodsIdList, getUserOrganId());
// 查询当前排单是否有自增板,如果有,删除
List<PlateDO> plateDOS = plateMapper.selectPlateIdList(orderIds, goodsIdList, getUserOrganId());
if (!plateDOS.isEmpty()) {
List<Long> plateIds = plateDOS.stream().map(PlateDO::getId).toList();
@@ -380,28 +403,42 @@ public class PlanServiceImpl implements PlanService {
// 删除商品表里的 planId
goodsMapper.deletePlanGoods(orderIds,ids,getUserOrganId());
List<Long> orderIdList = new ArrayList<>();
List<Long> diff;
List<Long> longList = goodsMapper.selectNoPlanOrdersList(orderIds, getUserOrganId());
// 根据生产单ID查询ES的优化数据
List<OptimizeBoardModelDO> optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 100);
if(optimizeBoardModelDOS.isEmpty()){
List<Long> diff = Stream.concat(
orderIds.stream().filter(str -> !longList.contains(str)),
longList.stream().filter(str -> !orderIds.contains(str)))
.toList();
diff = new ArrayList<>(orderIds);
}else {
optimizeBoardModelDOS.forEach(f -> orderIdList.addAll(f.getOrderId()));
// 已经删除的排单的生产单号和新查找的生生产单号对比,找出不同的部分
// diff = orderIds.stream().filter(f -> !orderIdList.contains(f)).toList();
diff = Stream.concat(
orderIds.stream().filter(str -> !orderIdList.contains(str)),
orderIdList.stream().filter(str -> !orderIds.contains(str)))
.toList();
}
// List<Long> orderIdList = new ArrayList<>();
//
// List<Long> diff = new ArrayList<>();
//
// // 根据生产单ID查询ES的优化数据
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 100);
//
// if(optimizeBoardModelDOS.isEmpty()){
//
// List<OrderDO> orderList = orderMapper.selectBatchIds(orderIds);
//
// List<OrderDO> orderDOList = orderList.stream().map(m -> m.setStatus(OrderStatusEnum.NEW_ORDER.getStatus())).toList();
//
// orderMapper.updateBatch(orderDOList);
//
// }else {
// optimizeBoardModelDOS.forEach(f -> orderIdList.addAll(f.getOrderId()));
//
// // 已经删除的排单的生产单号和新查找的生生产单号对比,找出不同的部分
//// diff = orderIds.stream().filter(f -> !orderIdList.contains(f)).toList();
// diff = Stream.concat(
// orderIds.stream().filter(str -> !orderIdList.contains(str)),
// orderIdList.stream().filter(str -> !orderIds.contains(str)))
// .toList();
// }
//
if(!diff.isEmpty()){
List<OrderDO> orderList = orderMapper.selectBatchIds(diff);
@@ -427,4 +427,21 @@
</select>
<select id="selectNoPlanOrdersList" resultType="java.lang.Long">
select distinct order_id
from order_goods
where organ_id = #{organId}
and deleted = false
and order_id in
<foreach item="orderIds" collection="orderIds" open="(" separator="," close=")">
#{orderIds}
</foreach>
and plan_id !=0;
</select>
</mapper>