| | |
| | | import com.dy.pmsGlobal.pojoPr.PrProductionNode; |
| | | import com.dy.pmsGlobal.pojoPr.PrWorkingInstruction; |
| | | import com.dy.pmsGlobal.pojoSta.*; |
| | | import com.dy.pmsGlobal.util.DeviceResult; |
| | | import com.dy.pmsGlobal.util.DeviceStatus; |
| | | import com.dy.pmsGlobal.util.QrCodeConstant; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | record.assistants = workLast.assistants; |
| | | record.errorMsg = params.errorMsg; |
| | | |
| | | Boolean isEnd = false;//是否经历过结束节点 |
| | | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); |
| | | record.nodeContent = node.content; |
| | | if (node.isRecord) { |
| | |
| | | if (node.getIsEnd() && record.outLineTime == null) { |
| | | record.outLineTime = new Date(); |
| | | assemblyPlan.setOutputNumber(assemblyPlan.getOutputNumber() + 1); |
| | | isEnd = true; |
| | | }else if(record.outLineTime != null){ |
| | | isEnd = true; |
| | | } |
| | | assemblyPlanDao.updateByPrimaryKeySelective(assemblyPlan); |
| | | record.status = getStatus(params.status, node.isEnd, workLast.workType.toString()); |
| | | if (record.status == null) { |
| | | record.status = preRecord.status; |
| | | } |
| | | |
| | | record.status = getStatus(params.status, isEnd, workLast.workType.toString()); |
| | | record.result = getResult(params.status, workLast.workType.toString()); |
| | | return record; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 状态: 0:待生产,1:组装中,2:完成,3:维修,4:报废,5:测试不通过,6:品检不通过 |
| | | * |
| | | * 原状态: 0:待生产,1:组装中,2:完成,3:维修,4:报废,5:测试不通过,6:品检不通过 |
| | | *20240717当前状态 状态: 1, 组装中,2:完成,3:维修,4:报废 |
| | | * @param status 状态 |
| | | * @param isEndNode 是否结束节点 |
| | | * @param isEnd 是否经历过结束节点 |
| | | * @return 状态 |
| | | */ |
| | | private Integer getStatus(String status, boolean isEndNode, String workType) { |
| | | //组装,维修 |
| | | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_REPAIR.equals(workType)) { |
| | | private Integer getStatus(String status, boolean isEnd, String workType) { |
| | | //组装 2024/07/17 目前组装workType 1 只有MarkOk //测试 //品检 //维修 |
| | | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> isEndNode ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); |
| | | case QrCodeConstant.MarkUnqualified, QrCodeConstant.MarkPreUnqualified -> DeviceStatus.REPAIR.getCode(); |
| | | case QrCodeConstant.MarkWaste -> DeviceStatus.WASTE.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | //品检,测试 |
| | | } else if (WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_TEST.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> null;//DeviceStatus.COMPLETED.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceStatus.TEST_FAILED.getCode(); |
| | | case QrCodeConstant.MarkOk -> isEnd ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceStatus.REPAIR.getCode(); |
| | | case QrCodeConstant.MarkWaste -> DeviceStatus.WASTE.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | } |
| | | throw new RuntimeException("状态错误,无效的节点类型: " + workType); |
| | | } |
| | | /** |
| | | * 结果: 1:通过,2:测试通过,3:品检通过,4:维修通过,5:测试不通过,6:品检不通过,7:报废 |
| | | * @param status 前端出来的状态 |
| | | * @return 结果 |
| | | */ |
| | | private Integer getResult(String status, String workType) { |
| | | //组装 |
| | | if (WORK_TYPE_ASSEMBLY.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.PASS.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | //测试 |
| | | }else if (WORK_TYPE_TEST.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.TEST_PASS.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceResult.TEST_FAIL.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | //品检 |
| | | }else if (WORK_TYPE_INSPECTION.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.INSPECTION_PASS.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceResult.INSPECTION_FAIL.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | //维修 |
| | | }else if (WORK_TYPE_REPAIR.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.REPAIR_PASS.getCode(); |
| | | case QrCodeConstant.MarkWaste -> DeviceResult.WASTE.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | } |
| | | throw new RuntimeException("状态错误,无效的节点类型: " + workType); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public int repair(QueryVo vo) { |
| | | long workId = Long.parseLong(vo.workId); |