diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java index 55f04e5e..b1f5a726 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java @@ -31,8 +31,6 @@ public class RbProduceManageController extends BladeController { private final IWorkOrderService workOrderService; - private final IWorkOrderRunService workOrderRunService; - @GetMapping("/page") @ApiOperationSupport(order = 1) @Operation(summary = "车间订单列表分页", description = "传入WorkOrderVO") @@ -76,7 +74,7 @@ public class RbProduceManageController extends BladeController { @ApiOperationSupport(order = 6) @Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO") public R listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) { - return R.data(workOrderRunService.listProProcess(listProProcessDTO)); + return R.data(workOrderService.listProProcess(listProProcessDTO)); } @PostMapping(value = "/transferBill") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java index eeb5ddf5..d424a77f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java @@ -1,11 +1,7 @@ package org.springblade.desk.produce.service; import org.springblade.core.mp.base.BaseService; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; -import org.springblade.desk.produce.pojo.entity.WorkPlanRun; - -import java.util.List; /** * 车间订单运行记录表 服务类 @@ -14,9 +10,4 @@ import java.util.List; */ public interface IWorkOrderRunService extends BaseService { - /** - *

方法名: listProProcess

- *

方法描述: 转单加载组装数据

- */ - List listProProcess(ListProProcessDTO listProProcessDTO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index c0e3cb27..fdd28089 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -2,6 +2,7 @@ package org.springblade.desk.produce.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; @@ -36,4 +37,10 @@ public interface IWorkOrderService extends BaseService { boolean updateStatus(List idArr, Integer status, Long userId, String memo); boolean transferBill(List workOrderRuns, List workPlanRuns); + + /** + *

方法名: listProProcess

+ *

方法描述: 转单加载组装数据

+ */ + List listProProcess(ListProProcessDTO listProProcessDTO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 674cd711..8a3885cc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -1,29 +1,11 @@ package org.springblade.desk.produce.service.impl; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; -import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.produce.mapper.WorkOrderRunMapper; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; -import org.springblade.desk.produce.pojo.entity.WorkPlan; -import org.springblade.desk.produce.pojo.entity.WorkPlanRun; import org.springblade.desk.produce.service.IWorkOrderRunService; -import org.springblade.desk.produce.service.IWorkPlanService; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import java.time.Instant; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID; /** * 车间订单运行记录表 服务实现类 @@ -34,108 +16,4 @@ import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID; @RequiredArgsConstructor public class WorkOrderRunServiceImpl extends BaseServiceImpl implements IWorkOrderRunService { - private final IWorkPlanService prWorkPlanService; - - private final IBsProcessSetService bsProcessSetService; - - @Override - public List listProProcess(ListProProcessDTO listProProcessDTO) { - List woIds = listProProcessDTO.getWoIds(); - Integer runType = listProProcessDTO.getRunType(); - if (CollectionUtils.isEmpty(woIds) || runType == null) { - return null; - } - Long curWoId = woIds.get(0); - List wpList = prWorkPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, curWoId)); - List wprList = new ArrayList<>(wpList.size()); - // 拿出第一个单子对应的可以派外协的工序 - String proName = ""; - for (WorkPlan wp : wpList) { - WorkPlanRun wpr = new WorkPlanRun(); - //验证 - if (!this.checkWp(wp, runType)) { - continue; - } - //转厂内时所有工序自动标记 - if (WorkOrderRun.RUN_TYPE_2.equals(runType)) { - wpr.setHandle(Boolean.TRUE); - } else { - wpr.setHandle(Boolean.FALSE); - } - - //组装工序号和工序id,用于批量验证是否一致 - if (StringUtils.isBlank(proName)) { - proName = wp.getOrders() + "_" + wp.getPpsId(); - } else { - proName = proName + "," + wp.getOrders() + "_" + wp.getPpsId(); - } - wpr.setCaId(wp.getCaId()); - wpr.setStartTime(localDateTimeToDate(wp.getStartTime())); - wpr.setEndTime(localDateTimeToDate(wp.getEndTime())); - wpr.setWpId(wp.getWoId()); - wprList.add(wpr); - } - - //如果是批量操作 - if (woIds.size() > 1) { - //从集合里面提出首单id - woIds.remove(curWoId); - - //验证其他车间订单是否满足条件 - for (Long aLong : woIds) { - wpList = prWorkPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, aLong)); - // 拿出其他单子可以派外协的工序与第一条做对比 - String otherProName = ""; - for (WorkPlan wp : wpList) { - - //验证 - if (!this.checkWp(wp, runType)) { - continue; - } - //组装工序号和工序id,用于批量验证是否一致 - if (StringUtils.isBlank(otherProName)) { - otherProName = wp.getOrders() + "_" + wp.getPpsId(); - } else { - otherProName = otherProName + "," + wp.getOrders() + "_" + wp.getPpsId(); - } - } - if (!proName.equals(otherProName)) { - throw new ServiceException("请选择相同的可转出的工序进行操作!!!"); - } - } - } - return wprList; - } - - private boolean checkWp(WorkPlan wp, Integer runType) { - //不分派工序不能操作 - BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); - if (processSet == null) { - return false; - } - if ("1".equals(processSet.getIsDispatch())) { - return false; - } - //如果是转厂内,则非厂外的工序跳过 - if (WorkOrderRun.RUN_TYPE_2.equals(runType) && "0".equals(wp.getOem())) { - return false; - } - return true; - } - - /** - * LocalDateTime 转 Date - * @param localDateTime - * @return - */ - private Date localDateTimeToDate(LocalDateTime localDateTime) { - // 空值校验,避免空指针异常 - if (localDateTime == null) { - return null; - } - // 1. LocalDateTime + 时区 → ZonedDateTime → Instant - Instant instant = localDateTime.atZone(DEFAULT_ZONE_ID).toInstant(); - // 2. Instant → Date - return Date.from(instant); - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index c120d83c..9c0016e6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -8,13 +8,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkOrderMapper; +import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; @@ -27,10 +27,15 @@ import org.springblade.desk.quality.service.IPlanTestService; import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.rmi.ServerException; +import java.time.Instant; +import java.time.LocalDateTime; import java.util.*; +import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID; + /** * 车间订单表 服务实现类 * @@ -202,7 +207,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl listProProcess(ListProProcessDTO listProProcessDTO) { + List woIds = listProProcessDTO.getWoIds(); + Integer runType = listProProcessDTO.getRunType(); + if (CollectionUtils.isEmpty(woIds) || runType == null) { + return null; + } + Long curWoId = woIds.get(0); + List wpList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, curWoId)); + List wprList = new ArrayList<>(wpList.size()); + // 拿出第一个单子对应的可以派外协的工序 + String proName = ""; + for (WorkPlan wp : wpList) { + WorkPlanRun wpr = new WorkPlanRun(); + //验证 + if (!this.checkWp(wp, runType)) { + continue; + } + //转厂内时所有工序自动标记 + if (WorkOrderRun.RUN_TYPE_2.equals(runType)) { + wpr.setHandle(Boolean.TRUE); + } else { + wpr.setHandle(Boolean.FALSE); + } + + //组装工序号和工序id,用于批量验证是否一致 + if (StringUtils.isBlank(proName)) { + proName = wp.getOrders() + "_" + wp.getPpsId(); + } else { + proName = proName + "," + wp.getOrders() + "_" + wp.getPpsId(); + } + wpr.setCaId(wp.getCaId()); + wpr.setStartTime(localDateTimeToDate(wp.getStartTime())); + wpr.setEndTime(localDateTimeToDate(wp.getEndTime())); + wpr.setWpId(wp.getWoId()); + wprList.add(wpr); + } + + //如果是批量操作 + if (woIds.size() > 1) { + //从集合里面提出首单id + woIds.remove(curWoId); + + //验证其他车间订单是否满足条件 + for (Long aLong : woIds) { + wpList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, aLong)); + // 拿出其他单子可以派外协的工序与第一条做对比 + String otherProName = ""; + for (WorkPlan wp : wpList) { + + //验证 + if (!this.checkWp(wp, runType)) { + continue; + } + //组装工序号和工序id,用于批量验证是否一致 + if (StringUtils.isBlank(otherProName)) { + otherProName = wp.getOrders() + "_" + wp.getPpsId(); + } else { + otherProName = otherProName + "," + wp.getOrders() + "_" + wp.getPpsId(); + } + } + if (!proName.equals(otherProName)) { + throw new ServiceException("请选择相同的可转出的工序进行操作!!!"); + } + } + } + return wprList; + } + + private boolean checkWp(WorkPlan wp, Integer runType) { //不分派工序不能操作 BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); if (processSet == null) { @@ -271,6 +345,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl