|
|
|
|
@ -2,23 +2,28 @@ package org.springblade.desk.produce.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
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.desk.basic.service.IProcessAbilityService; |
|
|
|
|
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.InBatchesDTO; |
|
|
|
|
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; |
|
|
|
|
import org.springblade.desk.produce.pojo.vo.WorkOrderVO; |
|
|
|
|
import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO; |
|
|
|
|
import org.springblade.desk.produce.pojo.vo.WorkPlanVO; |
|
|
|
|
import org.springblade.desk.produce.service.*; |
|
|
|
|
import org.springblade.desk.quality.pojo.entity.InspectionTask; |
|
|
|
|
import org.springblade.desk.quality.pojo.entity.PlanTest; |
|
|
|
|
@ -27,12 +32,13 @@ 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 org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.rmi.ServerException; |
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID; |
|
|
|
|
|
|
|
|
|
@ -69,6 +75,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
private final IPlateAroundService plateAroundService; |
|
|
|
|
|
|
|
|
|
private final IProcessAbilityService processAbilityService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) { |
|
|
|
|
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); |
|
|
|
|
@ -79,6 +87,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
WorkOrder workOrder = this.getById(woId); |
|
|
|
|
YieldOrder yieldOrder = yieldOrderService.getById(workOrder.getYoId()); |
|
|
|
|
BatchPrepareVO batchPrepareVO = new BatchPrepareVO(); |
|
|
|
|
batchPrepareVO.setId(woId); |
|
|
|
|
batchPrepareVO.setYieldOrder(yieldOrder); |
|
|
|
|
batchPrepareVO.setWoCode(this.nextCode(yieldOrder.getYpCode())); |
|
|
|
|
batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(),workOrder.getCardNo())); |
|
|
|
|
@ -88,7 +97,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean inBatches(Long oldWoId, WorkOrder workOrder, Long userId) { |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) { |
|
|
|
|
WorkOrder oldWo = this.getById(oldWoId); |
|
|
|
|
WorkOrder newWo = new WorkOrder(); |
|
|
|
|
YieldOrder newYie = new YieldOrder(); |
|
|
|
|
@ -97,21 +107,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
BeanUtils.copyProperties(oldYie, newYie); |
|
|
|
|
|
|
|
|
|
newYie.setId(null); |
|
|
|
|
newYie.setYpQty(workOrder.getMakeQty()); |
|
|
|
|
newYie.setBatchNo(workOrder.getBatchNo()); |
|
|
|
|
newYie.setCardNo(workOrder.getCardNo()); |
|
|
|
|
newYie.setYpQty(inBatchesDTO.getMakeQty()); |
|
|
|
|
newYie.setBatchNo(inBatchesDTO.getBatchNo()); |
|
|
|
|
newYie.setCardNo(inBatchesDTO.getCardNo()); |
|
|
|
|
newYie.setMemo("分批创建订单,用于二次来查原单"); |
|
|
|
|
newYie.setStatus(YieldOrderEnum.STATUS_PROCESSING.getCode()); |
|
|
|
|
yieldOrderService.save(newYie); |
|
|
|
|
YieldOrder newPj1 = yieldOrderService.getYoByCardNo(workOrder.getCardNo()); |
|
|
|
|
YieldOrder newPj1 = yieldOrderService.getYoByCardNo(inBatchesDTO.getCardNo()); |
|
|
|
|
newWo.setId(null); |
|
|
|
|
newWo.setYoId(newPj1.getId()); |
|
|
|
|
newWo.setMakeQty(workOrder.getMakeQty()); |
|
|
|
|
newWo.setWoCode(workOrder.getWoCode()); |
|
|
|
|
newWo.setBatchNo(workOrder.getBatchNo()); |
|
|
|
|
newWo.setMakeQty(inBatchesDTO.getMakeQty()); |
|
|
|
|
newWo.setWoCode(inBatchesDTO.getWoCode()); |
|
|
|
|
newWo.setBatchNo(inBatchesDTO.getBatchNo()); |
|
|
|
|
newWo.setOemType(-1); |
|
|
|
|
newWo.setCardNo(workOrder.getCardNo()); |
|
|
|
|
newWo.setMemo(workOrder.getMemo()); |
|
|
|
|
newWo.setCardNo(inBatchesDTO.getCardNo()); |
|
|
|
|
newWo.setMemo(inBatchesDTO.getMemo()); |
|
|
|
|
newWo.setMesCardNo(this.nextMesCardNo(oldWo.getMesCardNo())); |
|
|
|
|
|
|
|
|
|
oldWo.setMakeQty(oldWo.getMakeQty() - newWo.getMakeQty()); |
|
|
|
|
@ -148,9 +158,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
//产生车间运行记录信息
|
|
|
|
|
WorkOrderRun oldRun = workOrderRunService.getById(oldWo.getWorId()); |
|
|
|
|
WorkOrderRun wr = WorkOrderRun.builder().woId(newWo.getId()).woCode(newWo.getWoCode()).runType(WorkOrderRun.RUN_TYPE_2) |
|
|
|
|
.inTeam(oldRun != null ? oldRun.getInTeam() : null).memo("分批(厂内)").approvalMan(userId).systemData("1") |
|
|
|
|
.collaborate(newWo.getCollaborate()).runStatus(WorkOrderRun.RUN_STATUS_ISSUED).build(); |
|
|
|
|
WorkOrderRun wr = new WorkOrderRun(); |
|
|
|
|
wr.setWoId(newWo.getId()); |
|
|
|
|
wr.setWoCode(newWo.getWoCode()); |
|
|
|
|
wr.setRunType(WorkOrderRun.RUN_TYPE_2); |
|
|
|
|
wr.setInTeam(oldRun != null ? oldRun.getInTeam() : null); |
|
|
|
|
wr.setMemo("分批(厂内)"); |
|
|
|
|
wr.setApprovalMan(userId); |
|
|
|
|
wr.setSystemData("1"); |
|
|
|
|
wr.setCollaborate(newWo.getCollaborate()); |
|
|
|
|
wr.setRunStatus(WorkOrderRun.RUN_STATUS_ISSUED); |
|
|
|
|
workOrderRunService.save(wr); |
|
|
|
|
newWo.setWorId(wr.getId()); |
|
|
|
|
//保存作业计划
|
|
|
|
|
@ -181,6 +198,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean transferBill(List<WorkOrderRun> workOrderRunList, List<WorkPlanRun> wprList) { |
|
|
|
|
if (wprList == null || wprList.isEmpty()) { |
|
|
|
|
return false; |
|
|
|
|
@ -261,7 +279,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<WorkPlanRun> listProProcess(ListProProcessDTO listProProcessDTO) { |
|
|
|
|
public List<WorkPlanRunVO> listProProcess(ListProProcessDTO listProProcessDTO) { |
|
|
|
|
List<Long> woIds = listProProcessDTO.getWoIds(); |
|
|
|
|
Integer runType = listProProcessDTO.getRunType(); |
|
|
|
|
if (CollectionUtils.isEmpty(woIds) || runType == null) { |
|
|
|
|
@ -269,11 +287,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
Long curWoId = woIds.get(0); |
|
|
|
|
List<WorkPlan> wpList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, curWoId)); |
|
|
|
|
List<WorkPlanRun> wprList = new ArrayList<>(wpList.size()); |
|
|
|
|
List<WorkOrderRun> workOrderRuns = workOrderRunService.list(Wrappers.lambdaQuery(WorkOrderRun.class).eq(WorkOrderRun::getWoId, curWoId)); |
|
|
|
|
List<WorkPlanRunVO> wprList = new ArrayList<>(wpList.size()); |
|
|
|
|
// 拿出第一个单子对应的可以派外协的工序
|
|
|
|
|
String proName = ""; |
|
|
|
|
for (WorkPlan wp : wpList) { |
|
|
|
|
WorkPlanRun wpr = new WorkPlanRun(); |
|
|
|
|
WorkPlanRunVO wpr = new WorkPlanRunVO(); |
|
|
|
|
//验证
|
|
|
|
|
if (!this.checkWp(wp, runType)) { |
|
|
|
|
continue; |
|
|
|
|
@ -292,9 +311,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
proName = proName + "," + wp.getOrders() + "_" + wp.getPpsId(); |
|
|
|
|
} |
|
|
|
|
wpr.setCaId(wp.getCaId()); |
|
|
|
|
wpr.setProcessAbility(processAbilityService.getById(wp.getCaId())); |
|
|
|
|
wpr.setStartTime(localDateTimeToDate(wp.getStartTime())); |
|
|
|
|
wpr.setEndTime(localDateTimeToDate(wp.getEndTime())); |
|
|
|
|
wpr.setWpId(wp.getWoId()); |
|
|
|
|
WorkPlanVO wpVO = new WorkPlanVO(); |
|
|
|
|
BeanUtils.copyProperties(wp, wpr); |
|
|
|
|
wpVO.setProcessSet(bsProcessSetService.getById(wp.getPpsId())); |
|
|
|
|
wpr.setWpId(wp.getId()); |
|
|
|
|
wpr.setWorkPlan(wpVO); |
|
|
|
|
wpr.setWorkOrderRun(CollectionUtils.isNotEmpty(workOrderRuns) ? workOrderRuns.get(0) : null); |
|
|
|
|
wprList.add(wpr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -376,17 +401,23 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
// 如果是烧结部件,子件同样关闭
|
|
|
|
|
YieldOrder yieldOrder = yieldOrderService.getById(workOrder.getYoId()); |
|
|
|
|
if (YieldOrder.YIELD_TYPE_2.equals(yieldOrder.getYieldType())) { |
|
|
|
|
List<WorkOrder> prWorkOrderList = this.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, yieldOrder.getId())); |
|
|
|
|
if (prWorkOrderList != null && !prWorkOrderList.isEmpty()) { |
|
|
|
|
for (WorkOrder prWorkOrder : prWorkOrderList) { |
|
|
|
|
if (prWorkOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) { |
|
|
|
|
// 修改为关闭
|
|
|
|
|
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_VOIDED); |
|
|
|
|
this.updateById(prWorkOrder); |
|
|
|
|
List<YieldOrder> list = yieldOrderService.list(Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getFatherYoId, yieldOrder.getId())); |
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) { |
|
|
|
|
// 将list转换为id集合
|
|
|
|
|
List<Long> yoIds = list.stream().map(YieldOrder::getId).toList(); |
|
|
|
|
List<WorkOrder> prWorkOrderList = this.list(Wrappers.lambdaQuery(WorkOrder.class).in(WorkOrder::getYoId, yoIds)); |
|
|
|
|
if (prWorkOrderList != null && !prWorkOrderList.isEmpty()) { |
|
|
|
|
for (WorkOrder prWorkOrder : prWorkOrderList) { |
|
|
|
|
if (prWorkOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) { |
|
|
|
|
// 修改为关闭
|
|
|
|
|
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_VOIDED); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.updateBatchById(prWorkOrderList); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.updateById(workOrder); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|