|
|
|
|
@ -173,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, false); |
|
|
|
|
List<WorkPlan> oldList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, oldWoId)); |
|
|
|
|
//保存作业计划
|
|
|
|
|
List<WorkPlan> wpList = this.saveWorkPlan(oldList, newWo, oldWoId); |
|
|
|
|
@ -200,7 +200,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private WorkOrder addWorkOrderAndYieldOrder(WorkOrder oldWo, InBatchesDTO inBatchesDTO) { |
|
|
|
|
/** |
|
|
|
|
* @param oldWo |
|
|
|
|
* @param inBatchesDTO |
|
|
|
|
* @param oem 是否外协分批 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private WorkOrder addWorkOrderAndYieldOrder(WorkOrder oldWo, InBatchesDTO inBatchesDTO, boolean oem) { |
|
|
|
|
WorkOrder newWo = new WorkOrder(); |
|
|
|
|
YieldOrder newYie = new YieldOrder(); |
|
|
|
|
YieldOrder oldYie = yieldOrderService.getById(oldWo.getYoId()); |
|
|
|
|
@ -221,6 +227,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
newWo.setWoCode(inBatchesDTO.getWoCode()); |
|
|
|
|
newWo.setBatchNo(inBatchesDTO.getBatchNo()); |
|
|
|
|
newWo.setOemType(-1); |
|
|
|
|
if (oem) { |
|
|
|
|
//外协分批需要更新此状态,其他不变
|
|
|
|
|
newWo.setOemOut("0"); |
|
|
|
|
} |
|
|
|
|
newWo.setCardNo(inBatchesDTO.getCardNo()); |
|
|
|
|
newWo.setMemo(inBatchesDTO.getMemo()); |
|
|
|
|
newWo.setMesCardNo(oldWo.getMesCardNo() != null ? this.nextMesCardNo(oldWo.getMesCardNo()) : ""); |
|
|
|
|
@ -770,10 +780,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
yieldOrderService.updateYieldStatus(workOrder.getYoId(), YieldOrder.CUR_STATUS_COMPLETED, workOrder.getInventoryQty()); |
|
|
|
|
} else if (WorkOrder.RUN_STATUS_ISSUED.equals(runStatus)) { |
|
|
|
|
workOrder.setApprovalStatus(WorkOrder.APPROVAL_STATUS_NORMAL); |
|
|
|
|
// if (workOrder.getPrWorkPlan().getMakeTeam() != null) {
|
|
|
|
|
// if (workOrder.getWorkPlan().getMakeTeam() != null) {
|
|
|
|
|
// String msgContent = "车间订单:【" + workOrder.getWoCode() + "】,零件号:【" + workOrder.getPjYieldOrder()
|
|
|
|
|
// .getPartCode() + ",】批次号:【" + workOrder.getBatchNo() + "】,已下达,请班组长分配工作!!";
|
|
|
|
|
// pfMessageService.sendMessage(msgContent, workOrder.getPrWorkPlan().getMakeTeam().getDispatcher().getUserId(),
|
|
|
|
|
// pfMessageService.sendMessage(msgContent, workOrder.getWorkPlan().getMakeTeam().getDispatcher().getUserId(),
|
|
|
|
|
// PfMessageType.MTCODE_0200, userInfo, Boolean.FALSE, null);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@ -1722,6 +1732,98 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R inOemBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) { |
|
|
|
|
WorkOrder oldWo = this.getById(oldWoId); |
|
|
|
|
WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo, inBatchesDTO, true); |
|
|
|
|
List<WorkPlan> oldList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, oldWoId)); |
|
|
|
|
//保存作业计划
|
|
|
|
|
List<WorkPlan> wpList = this.saveWorkPlan(oldList, newWo, oldWoId); |
|
|
|
|
// 获取旧工单的运行记录,用于复用字段
|
|
|
|
|
WorkOrderRun oldWr = workOrderRunService.getById(oldWo.getWorId()); |
|
|
|
|
|
|
|
|
|
// 产生车间运行记录信息(完整设置所有字段)
|
|
|
|
|
WorkOrderRun wr = new WorkOrderRun(); |
|
|
|
|
|
|
|
|
|
// 基础关联信息
|
|
|
|
|
wr.setWoId(newWo.getId()); // 新工单对象
|
|
|
|
|
wr.setWoCode(newWo.getWoCode()); // 新工单编号
|
|
|
|
|
wr.setRunType(WorkOrderRun.RUN_TYPE_1); // 运行类型改为外协
|
|
|
|
|
wr.setOemStatus(WorkOrderRun.OEM_STATUS_TO);//外协状态改为待外协
|
|
|
|
|
// 复用旧运行记录的班组和供应商信息
|
|
|
|
|
wr.setOutTeam(oldWr.getOutTeam()); // 转出班组
|
|
|
|
|
wr.setInTeam(oldWr.getInTeam()); // 转入班组
|
|
|
|
|
wr.setOutCustomer(oldWr.getOutCustomer()); // 转出供应商
|
|
|
|
|
wr.setInCustomer(oldWr.getInCustomer()); // 转入供应商
|
|
|
|
|
|
|
|
|
|
// 备注信息修改
|
|
|
|
|
wr.setMemo("分批(外协)"); // 备注改成分批(外协)
|
|
|
|
|
|
|
|
|
|
// 时间和人员信息
|
|
|
|
|
wr.setCreateTime(new Date()); // 创建时间为当前时间
|
|
|
|
|
wr.setCreateUser(userId); // 创建人
|
|
|
|
|
wr.setApprovalMan(oldWr.getApprovalMan()); // 审批人(复用旧记录)
|
|
|
|
|
wr.setApprovalTime(oldWr.getApprovalTime()); // 审批时间(复用旧记录)
|
|
|
|
|
wr.setApprovalMemo(oldWr.getApprovalMemo()); // 审批意见(复用旧记录)
|
|
|
|
|
|
|
|
|
|
// 其他状态字段
|
|
|
|
|
wr.setPrintFlag(oldWr.getPrintFlag()); // 打印标记
|
|
|
|
|
wr.setDeliverKey(oldWr.getDeliverKey()); // 交件单号
|
|
|
|
|
wr.setRunStatus(oldWr.getRunStatus()); // 订单状态
|
|
|
|
|
wr.setSystemData(oldWr.getSystemData()); // 系统数据标识
|
|
|
|
|
wr.setPrintMan(oldWr.getPrintMan()); // 打印人
|
|
|
|
|
wr.setCollaborate(newWo.getCollaborate()); // 是否协作计划(取自新工单)
|
|
|
|
|
|
|
|
|
|
// 保存新的运行记录并关联到新工单
|
|
|
|
|
workOrderRunService.save(wr); |
|
|
|
|
newWo.setWorId(wr.getId()); |
|
|
|
|
//保存作业计划
|
|
|
|
|
this.calculationWp(newWo, wpList); |
|
|
|
|
// 转存工序的加工信息
|
|
|
|
|
this.saveProcessMarkRec(oldList, wpList); |
|
|
|
|
// 创建并保存工序运行明细记录
|
|
|
|
|
// 获取旧工单对应的工序运行记录列表
|
|
|
|
|
List<WorkPlanRun> oldWprList = workPlanRunService.list(Wrappers.lambdaQuery(WorkPlanRun.class).eq(WorkPlanRun::getWorId, oldWr.getId())); |
|
|
|
|
if (oldWprList != null && !oldWprList.isEmpty()) { |
|
|
|
|
// 创建映射表,方便通过wpId查找对应的旧工序运行记录
|
|
|
|
|
Map<String, WorkPlanRun> oldWprMap = new HashMap<>(); |
|
|
|
|
for (WorkPlanRun oldWpr : oldWprList) { |
|
|
|
|
WorkPlan oldWp = workPlanService.getById(oldWpr.getWpId()); |
|
|
|
|
// 假设"工序顺序_工序集合ID"是唯一标识
|
|
|
|
|
String key = oldWp.getOrders() + "_" + oldWp.getPpsId(); |
|
|
|
|
oldWprMap.put(key, oldWpr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 为每个新作业计划创建对应的工序运行记录
|
|
|
|
|
List<WorkPlanRun> newWprList = new ArrayList<>(); |
|
|
|
|
for (WorkPlan newWp : wpList) { |
|
|
|
|
String key = newWp.getOrders() + "_" + newWp.getPpsId(); |
|
|
|
|
WorkPlanRun oldWpr = oldWprMap.get(key); |
|
|
|
|
if (oldWpr != null) { |
|
|
|
|
WorkPlanRun newWpr = new WorkPlanRun(); |
|
|
|
|
|
|
|
|
|
// 设置新生成的关联字段
|
|
|
|
|
newWpr.setWorId(wr.getId()); // 关联新生成的工单运行记录
|
|
|
|
|
newWpr.setWpId(newWp.getId()); // 关联新生成的作业计划
|
|
|
|
|
newWpr.setCaId(newWp.getCaId()); // 使用新作业计划的工艺能力
|
|
|
|
|
|
|
|
|
|
// 复用旧记录中的字段
|
|
|
|
|
newWpr.setHandle(oldWpr.getHandle()); // 处理工序标记
|
|
|
|
|
newWpr.setStartTime(oldWpr.getStartTime()); // 计划开始时间
|
|
|
|
|
newWpr.setEndTime(oldWpr.getEndTime()); // 计划结束时间
|
|
|
|
|
|
|
|
|
|
newWprList.add(newWpr); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!newWprList.isEmpty()) { |
|
|
|
|
for (WorkPlanRun wpr : newWprList) { |
|
|
|
|
workPlanRunService.save(wpr); // 调用单条保存方法
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return R.success("操作完成"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) { |
|
|
|
|
if (workPlan == null) { |
|
|
|
|
return; |
|
|
|
|
|