|
|
|
|
@ -19,10 +19,14 @@ import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
import org.springblade.desk.basic.constant.FlowConst; |
|
|
|
|
import org.springblade.desk.basic.feign.WorkCenterClient; |
|
|
|
|
import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; |
|
|
|
|
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; |
|
|
|
|
import org.springblade.desk.basic.pojo.entity.WorkCenter; |
|
|
|
|
import org.springblade.desk.basic.service.IOemCraftAbilityService; |
|
|
|
|
import org.springblade.desk.basic.service.IOemService; |
|
|
|
|
import org.springblade.desk.basic.service.IProcessAbilityService; |
|
|
|
|
import org.springblade.desk.basic.service.IWorkCenterService; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; |
|
|
|
|
@ -142,6 +146,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
private final IOemCraftAbilityService oemCraftAbilityService; |
|
|
|
|
|
|
|
|
|
private final IWorkCenterService workCenterService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) { |
|
|
|
|
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); |
|
|
|
|
@ -167,7 +173,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) { |
|
|
|
|
WorkOrder oldWo = this.getById(oldWoId); |
|
|
|
|
WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo,inBatchesDTO); |
|
|
|
|
WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo, inBatchesDTO); |
|
|
|
|
List<WorkPlan> oldList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, oldWoId)); |
|
|
|
|
//保存作业计划
|
|
|
|
|
List<WorkPlan> wpList = this.saveWorkPlan(oldList, newWo, oldWoId); |
|
|
|
|
@ -1466,37 +1472,58 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean workPlanReceive(Long wpId) { |
|
|
|
|
WorkPlan workPlan = workPlanService.getById(wpId); |
|
|
|
|
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId()); |
|
|
|
|
WorkOrder workOrder = this.getById(workPlan.getWoId()); |
|
|
|
|
// 上序不为空时进行审理单验证
|
|
|
|
|
if (frontWorkPlan != null) { |
|
|
|
|
// 验证上序是否存在未完成审理,如果存在则不允许接收
|
|
|
|
|
InspectionTask checkByWpId = iInspectionTaskService.getPrWorkCheckByWpId(frontWorkPlan.getId()); |
|
|
|
|
if (checkByWpId != null) { |
|
|
|
|
// 查询是否存在未完的审理单
|
|
|
|
|
List<ReviewSheet> rsLst = reviewSheetService.getNoCompleteByWcId(checkByWpId.getId()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(rsLst)) { |
|
|
|
|
throw new ServiceException("存在未完成审理单,请处理后再进行接收"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 验证车间订单状态
|
|
|
|
|
if (!WorkOrder.RUN_STATUS_RECEIVE.equals(workOrder.getRunStatus())) { |
|
|
|
|
throw new ServiceException("存在未完成审理单,请处理后再进行接收"); |
|
|
|
|
} |
|
|
|
|
public boolean workPlanReceive(List<Long> wpIdList) { |
|
|
|
|
List<WorkPlan> workPlans = workPlanService.listByIds(wpIdList); |
|
|
|
|
if (CollectionUtils.isEmpty(workPlans)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
// workPlans根据ID转为map
|
|
|
|
|
Map<Long, WorkPlan> workPlanMap = workPlans.stream().collect(Collectors.toMap(WorkPlan::getId, workPlan -> workPlan)); |
|
|
|
|
for (Long wpId : wpIdList) { |
|
|
|
|
this.dataValidation(wpId); |
|
|
|
|
WorkPlan workPlan = workPlanMap.get(wpId); |
|
|
|
|
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId()); |
|
|
|
|
WorkOrder workOrder = this.getById(workPlan.getWoId()); |
|
|
|
|
|
|
|
|
|
Date newDate = new Date(); |
|
|
|
|
// 完成上序
|
|
|
|
|
this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty()); |
|
|
|
|
|
|
|
|
|
// 开始本序
|
|
|
|
|
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder); |
|
|
|
|
Date newDate = new Date(); |
|
|
|
|
// 完成上序
|
|
|
|
|
this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty()); |
|
|
|
|
|
|
|
|
|
// 开始本序
|
|
|
|
|
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder); |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void verifyMakeUnit(WorkPlan workPlan, WorkPlan frontWorkPlan) { |
|
|
|
|
if (workPlan.getFrontWpId() == null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//当前序作业中心为检验单位,不验证镀前出入库
|
|
|
|
|
if (workPlan.getMakeTeam() != null) { |
|
|
|
|
BsTeamSetEntity ct = teamSetService.getById(workPlan.getMakeTeam()); |
|
|
|
|
if (ct != null) { |
|
|
|
|
WorkCenter workCenter = workCenterService.getById(ct.getWcId()); |
|
|
|
|
if (1 == workCenter.getCheckout()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if ("1".equals(frontWorkPlan.getOem()) && "1".equals(workPlan.getOem())) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
List<PlateAround> pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).eq(PlateAround::getWpId, workPlan.getId())); |
|
|
|
|
if (CollectionUtils.isEmpty(pa)) { |
|
|
|
|
if ("1".equals(frontWorkPlan.getOem())) { |
|
|
|
|
//上序外协,本序如果可以接收,验证镀前出库记录
|
|
|
|
|
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); |
|
|
|
|
} else if (!frontWorkPlan.getMakeTeam().equals(workPlan.getMakeTeam())) { |
|
|
|
|
//加工班组不同,验证镀前出库记录
|
|
|
|
|
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void workPlanStart(WorkPlan workPlan, Date startDate, Long userId, WorkOrder workOrder) { |
|
|
|
|
if (workPlan == null) { |
|
|
|
|
return; |
|
|
|
|
@ -1662,6 +1689,39 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void dataValidation(Long wpId) { |
|
|
|
|
WorkPlan workPlan = workPlanService.getById(wpId); |
|
|
|
|
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId()); |
|
|
|
|
WorkOrder workOrder = this.getById(workPlan.getWoId()); |
|
|
|
|
// 上序不为空时进行审理单验证
|
|
|
|
|
if (frontWorkPlan != null) { |
|
|
|
|
// 验证上序是否存在未完成审理,如果存在则不允许接收
|
|
|
|
|
InspectionTask checkByWpId = iInspectionTaskService.getPrWorkCheckByWpId(frontWorkPlan.getId()); |
|
|
|
|
if (checkByWpId != null) { |
|
|
|
|
// 查询是否存在未完的审理单
|
|
|
|
|
List<ReviewSheet> rsLst = reviewSheetService.getNoCompleteByWcId(checkByWpId.getId()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(rsLst)) { |
|
|
|
|
throw new ServiceException("存在未完成审理单,请处理后再进行接收"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 验证车间订单状态
|
|
|
|
|
if (!WorkOrder.RUN_STATUS_RECEIVE.equals(workOrder.getRunStatus())) { |
|
|
|
|
throw new ServiceException("存在未完成审理单,请处理后再进行接收"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//验证接收工序与上序是否需要镀前出入库
|
|
|
|
|
if (workPlan.getNextWpId() != null) { |
|
|
|
|
this.verifyMakeUnit(workPlan, frontWorkPlan); |
|
|
|
|
if (frontWorkPlan != null) { |
|
|
|
|
//验证上道工序是否报工完成
|
|
|
|
|
if (!WorkPlan.STATUS_WORK_OK.equals(frontWorkPlan.getStatus())) { |
|
|
|
|
throw new ServiceException("上序未报工完成,请联系相关人员处理!"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) { |
|
|
|
|
if (workPlan == null) { |
|
|
|
|
return; |
|
|
|
|
|